! function(e, t) {
    "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
        if (!e.document) throw new Error("jQuery requires a window with a document");
        return t(e)
    } : t(e)
}("undefined" != typeof window ? window : this, function(e, t) {
    function n(e) {
        var t = e.length,
            n = ie.type(e);
        return "function" === n || ie.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e
    }

    function r(e, t, n) {
        if (ie.isFunction(t)) return ie.grep(e, function(e, r) {
            return !!t.call(e, r, e) !== n
        });
        if (t.nodeType) return ie.grep(e, function(e) {
            return e === t !== n
        });
        if ("string" == typeof t) {
            if (pe.test(t)) return ie.filter(t, e, n);
            t = ie.filter(t, e)
        }
        return ie.grep(e, function(e) {
            return ie.inArray(e, t) >= 0 !== n
        })
    }

    function i(e, t) {
        do e = e[t]; while (e && 1 !== e.nodeType);
        return e
    }

    function o(e) {
        var t = _e[e] = {};
        return ie.each(e.match(be) || [], function(e, n) {
            t[n] = !0
        }), t
    }

    function a() {
        he.addEventListener ? (he.removeEventListener("DOMContentLoaded", s, !1), e.removeEventListener("load", s, !1)) : (he.detachEvent("onreadystatechange", s), e.detachEvent("onload", s))
    }

    function s() {
        (he.addEventListener || "load" === event.type || "complete" === he.readyState) && (a(), ie.ready())
    }

    function l(e, t, n) {
        if (void 0 === n && 1 === e.nodeType) {
            var r = "data-" + t.replace(Ce, "-$1").toLowerCase();
            if (n = e.getAttribute(r), "string" == typeof n) {
                try {
                    n = "true" === n ? !0 : "false" === n ? !1 : "null" === n ? null : +n + "" === n ? +n : Te.test(n) ? ie.parseJSON(n) : n
                } catch (i) {}
                ie.data(e, t, n)
            } else n = void 0
        }
        return n
    }

    function c(e) {
        var t;
        for (t in e)
            if (("data" !== t || !ie.isEmptyObject(e[t])) && "toJSON" !== t) return !1;
        return !0
    }

    function u(e, t, n, r) {
        if (ie.acceptData(e)) {
            var i, o, a = ie.expando,
                s = e.nodeType,
                l = s ? ie.cache : e,
                c = s ? e[a] : e[a] && a;
            if (c && l[c] && (r || l[c].data) || void 0 !== n || "string" != typeof t) return c || (c = s ? e[a] = V.pop() || ie.guid++ : a), l[c] || (l[c] = s ? {} : {
                toJSON: ie.noop
            }), ("object" == typeof t || "function" == typeof t) && (r ? l[c] = ie.extend(l[c], t) : l[c].data = ie.extend(l[c].data, t)), o = l[c], r || (o.data || (o.data = {}), o = o.data), void 0 !== n && (o[ie.camelCase(t)] = n), "string" == typeof t ? (i = o[t], null == i && (i = o[ie.camelCase(t)])) : i = o, i
        }
    }

    function d(e, t, n) {
        if (ie.acceptData(e)) {
            var r, i, o = e.nodeType,
                a = o ? ie.cache : e,
                s = o ? e[ie.expando] : ie.expando;
            if (a[s]) {
                if (t && (r = n ? a[s] : a[s].data)) {
                    ie.isArray(t) ? t = t.concat(ie.map(t, ie.camelCase)) : t in r ? t = [t] : (t = ie.camelCase(t), t = t in r ? [t] : t.split(" ")), i = t.length;
                    for (; i--;) delete r[t[i]];
                    if (n ? !c(r) : !ie.isEmptyObject(r)) return
                }(n || (delete a[s].data, c(a[s]))) && (o ? ie.cleanData([e], !0) : ne.deleteExpando || a != a.window ? delete a[s] : a[s] = null)
            }
        }
    }

    function p() {
        return !0
    }

    function f() {
        return !1
    }

    function h() {
        try {
            return he.activeElement
        } catch (e) {}
    }

    function m(e) {
        var t = ze.split("|"),
            n = e.createDocumentFragment();
        if (n.createElement)
            for (; t.length;) n.createElement(t.pop());
        return n
    }

    function g(e, t) {
        var n, r, i = 0,
            o = typeof e.getElementsByTagName !== we ? e.getElementsByTagName(t || "*") : typeof e.querySelectorAll !== we ? e.querySelectorAll(t || "*") : void 0;
        if (!o)
            for (o = [], n = e.childNodes || e; null != (r = n[i]); i++) !t || ie.nodeName(r, t) ? o.push(r) : ie.merge(o, g(r, t));
        return void 0 === t || t && ie.nodeName(e, t) ? ie.merge([e], o) : o
    }

    function v(e) {
        Ae.test(e.type) && (e.defaultChecked = e.checked)
    }

    function y(e, t) {
        return ie.nodeName(e, "table") && ie.nodeName(11 !== t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
    }

    function b(e) {
        return e.type = (null !== ie.find.attr(e, "type")) + "/" + e.type, e
    }

    function _(e) {
        var t = Ge.exec(e.type);
        return t ? e.type = t[1] : e.removeAttribute("type"), e
    }

    function x(e, t) {
        for (var n, r = 0; null != (n = e[r]); r++) ie._data(n, "globalEval", !t || ie._data(t[r], "globalEval"))
    }

    function S(e, t) {
        if (1 === t.nodeType && ie.hasData(e)) {
            var n, r, i, o = ie._data(e),
                a = ie._data(t, o),
                s = o.events;
            if (s) {
                delete a.handle, a.events = {};
                for (n in s)
                    for (r = 0, i = s[n].length; i > r; r++) ie.event.add(t, n, s[n][r])
            }
            a.data && (a.data = ie.extend({}, a.data))
        }
    }

    function w(e, t) {
        var n, r, i;
        if (1 === t.nodeType) {
            if (n = t.nodeName.toLowerCase(), !ne.noCloneEvent && t[ie.expando]) {
                i = ie._data(t);
                for (r in i.events) ie.removeEvent(t, r, i.handle);
                t.removeAttribute(ie.expando)
            }
            "script" === n && t.text !== e.text ? (b(t).text = e.text, _(t)) : "object" === n ? (t.parentNode && (t.outerHTML = e.outerHTML), ne.html5Clone && e.innerHTML && !ie.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : "input" === n && Ae.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : "option" === n ? t.defaultSelected = t.selected = e.defaultSelected : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue)
        }
    }

    function T(t, n) {
        var r, i = ie(n.createElement(t)).appendTo(n.body),
            o = e.getDefaultComputedStyle && (r = e.getDefaultComputedStyle(i[0])) ? r.display : ie.css(i[0], "display");
        return i.detach(), o
    }

    function C(e) {
        var t = he,
            n = Qe[e];
        return n || (n = T(e, t), "none" !== n && n || (Ke = (Ke || ie("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement), t = (Ke[0].contentWindow || Ke[0].contentDocument).document, t.write(), t.close(), n = T(e, t), Ke.detach()), Qe[e] = n), n
    }

    function k(e, t) {
        return {
            get: function() {
                var n = e();
                return null != n ? n ? void delete this.get : (this.get = t).apply(this, arguments) : void 0
            }
        }
    }

    function E(e, t) {
        if (t in e) return t;
        for (var n = t.charAt(0).toUpperCase() + t.slice(1), r = t, i = pt.length; i--;)
            if (t = pt[i] + n, t in e) return t;
        return r
    }

    function N(e, t) {
        for (var n, r, i, o = [], a = 0, s = e.length; s > a; a++) r = e[a], r.style && (o[a] = ie._data(r, "olddisplay"), n = r.style.display, t ? (o[a] || "none" !== n || (r.style.display = ""), "" === r.style.display && Ne(r) && (o[a] = ie._data(r, "olddisplay", C(r.nodeName)))) : (i = Ne(r), (n && "none" !== n || !i) && ie._data(r, "olddisplay", i ? n : ie.css(r, "display"))));
        for (a = 0; s > a; a++) r = e[a], r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[a] || "" : "none"));
        return e
    }

    function D(e, t, n) {
        var r = lt.exec(t);
        return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
    }

    function A(e, t, n, r, i) {
        for (var o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0, a = 0; 4 > o; o += 2) "margin" === n && (a += ie.css(e, n + Ee[o], !0, i)), r ? ("content" === n && (a -= ie.css(e, "padding" + Ee[o], !0, i)), "margin" !== n && (a -= ie.css(e, "border" + Ee[o] + "Width", !0, i))) : (a += ie.css(e, "padding" + Ee[o], !0, i), "padding" !== n && (a += ie.css(e, "border" + Ee[o] + "Width", !0, i)));
        return a
    }

    function L(e, t, n) {
        var r = !0,
            i = "width" === t ? e.offsetWidth : e.offsetHeight,
            o = et(e),
            a = ne.boxSizing && "border-box" === ie.css(e, "boxSizing", !1, o);
        if (0 >= i || null == i) {
            if (i = tt(e, t, o), (0 > i || null == i) && (i = e.style[t]), rt.test(i)) return i;
            r = a && (ne.boxSizingReliable() || i === e.style[t]), i = parseFloat(i) || 0
        }
        return i + A(e, t, n || (a ? "border" : "content"), r, o) + "px"
    }

    function M(e, t, n, r, i) {
        return new M.prototype.init(e, t, n, r, i)
    }

    function j() {
        return setTimeout(function() {
            ft = void 0
        }), ft = ie.now()
    }

    function P(e, t) {
        var n, r = {
                height: e
            },
            i = 0;
        for (t = t ? 1 : 0; 4 > i; i += 2 - t) n = Ee[i], r["margin" + n] = r["padding" + n] = e;
        return t && (r.opacity = r.width = e), r
    }

    function H(e, t, n) {
        for (var r, i = (bt[t] || []).concat(bt["*"]), o = 0, a = i.length; a > o; o++)
            if (r = i[o].call(n, t, e)) return r
    }

    function z(e, t, n) {
        var r, i, o, a, s, l, c, u, d = this,
            p = {},
            f = e.style,
            h = e.nodeType && Ne(e),
            m = ie._data(e, "fxshow");
        n.queue || (s = ie._queueHooks(e, "fx"), null == s.unqueued && (s.unqueued = 0, l = s.empty.fire, s.empty.fire = function() {
            s.unqueued || l()
        }), s.unqueued++, d.always(function() {
            d.always(function() {
                s.unqueued--, ie.queue(e, "fx").length || s.empty.fire()
            })
        })), 1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [f.overflow, f.overflowX, f.overflowY], c = ie.css(e, "display"), u = "none" === c ? ie._data(e, "olddisplay") || C(e.nodeName) : c, "inline" === u && "none" === ie.css(e, "float") && (ne.inlineBlockNeedsLayout && "inline" !== C(e.nodeName) ? f.zoom = 1 : f.display = "inline-block")), n.overflow && (f.overflow = "hidden", ne.shrinkWrapBlocks() || d.always(function() {
            f.overflow = n.overflow[0], f.overflowX = n.overflow[1], f.overflowY = n.overflow[2]
        }));
        for (r in t)
            if (i = t[r], mt.exec(i)) {
                if (delete t[r], o = o || "toggle" === i, i === (h ? "hide" : "show")) {
                    if ("show" !== i || !m || void 0 === m[r]) continue;
                    h = !0
                }
                p[r] = m && m[r] || ie.style(e, r)
            } else c = void 0;
        if (ie.isEmptyObject(p)) "inline" === ("none" === c ? C(e.nodeName) : c) && (f.display = c);
        else {
            m ? "hidden" in m && (h = m.hidden) : m = ie._data(e, "fxshow", {}), o && (m.hidden = !h), h ? ie(e).show() : d.done(function() {
                ie(e).hide()
            }), d.done(function() {
                var t;
                ie._removeData(e, "fxshow");
                for (t in p) ie.style(e, t, p[t])
            });
            for (r in p) a = H(h ? m[r] : 0, r, d), r in m || (m[r] = a.start, h && (a.end = a.start, a.start = "width" === r || "height" === r ? 1 : 0))
        }
    }

    function X(e, t) {
        var n, r, i, o, a;
        for (n in e)
            if (r = ie.camelCase(n), i = t[r], o = e[n], ie.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), a = ie.cssHooks[r], a && "expand" in a) {
                o = a.expand(o), delete e[r];
                for (n in o) n in e || (e[n] = o[n], t[n] = i)
            } else t[r] = i
    }

    function Y(e, t, n) {
        var r, i, o = 0,
            a = yt.length,
            s = ie.Deferred().always(function() {
                delete l.elem
            }),
            l = function() {
                if (i) return !1;
                for (var t = ft || j(), n = Math.max(0, c.startTime + c.duration - t), r = n / c.duration || 0, o = 1 - r, a = 0, l = c.tweens.length; l > a; a++) c.tweens[a].run(o);
                return s.notifyWith(e, [c, o, n]), 1 > o && l ? n : (s.resolveWith(e, [c]), !1)
            },
            c = s.promise({
                elem: e,
                props: ie.extend({}, t),
                opts: ie.extend(!0, {
                    specialEasing: {}
                }, n),
                originalProperties: t,
                originalOptions: n,
                startTime: ft || j(),
                duration: n.duration,
                tweens: [],
                createTween: function(t, n) {
                    var r = ie.Tween(e, c.opts, t, n, c.opts.specialEasing[t] || c.opts.easing);
                    return c.tweens.push(r), r
                },
                stop: function(t) {
                    var n = 0,
                        r = t ? c.tweens.length : 0;
                    if (i) return this;
                    for (i = !0; r > n; n++) c.tweens[n].run(1);
                    return t ? s.resolveWith(e, [c, t]) : s.rejectWith(e, [c, t]), this
                }
            }),
            u = c.props;
        for (X(u, c.opts.specialEasing); a > o; o++)
            if (r = yt[o].call(c, e, u, c.opts)) return r;
        return ie.map(u, H, c), ie.isFunction(c.opts.start) && c.opts.start.call(e, c), ie.fx.timer(ie.extend(l, {
            elem: e,
            anim: c,
            queue: c.opts.queue
        })), c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts.always)
    }

    function q(e) {
        return function(t, n) {
            "string" != typeof t && (n = t, t = "*");
            var r, i = 0,
                o = t.toLowerCase().match(be) || [];
            if (ie.isFunction(n))
                for (; r = o[i++];) "+" === r.charAt(0) ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
        }
    }

    function W(e, t, n, r) {
        function i(s) {
            var l;
            return o[s] = !0, ie.each(e[s] || [], function(e, s) {
                var c = s(t, n, r);
                return "string" != typeof c || a || o[c] ? a ? !(l = c) : void 0 : (t.dataTypes.unshift(c), i(c), !1)
            }), l
        }
        var o = {},
            a = e === Ft;
        return i(t.dataTypes[0]) || !o["*"] && i("*")
    }

    function O(e, t) {
        var n, r, i = ie.ajaxSettings.flatOptions || {};
        for (r in t) void 0 !== t[r] && ((i[r] ? e : n || (n = {}))[r] = t[r]);
        return n && ie.extend(!0, e, n), e
    }

    function $(e, t, n) {
        for (var r, i, o, a, s = e.contents, l = e.dataTypes;
            "*" === l[0];) l.shift(), void 0 === i && (i = e.mimeType || t.getResponseHeader("Content-Type"));
        if (i)
            for (a in s)
                if (s[a] && s[a].test(i)) {
                    l.unshift(a);
                    break
                }
        if (l[0] in n) o = l[0];
        else {
            for (a in n) {
                if (!l[0] || e.converters[a + " " + l[0]]) {
                    o = a;
                    break
                }
                r || (r = a)
            }
            o = o || r
        }
        return o ? (o !== l[0] && l.unshift(o), n[o]) : void 0
    }

    function F(e, t, n, r) {
        var i, o, a, s, l, c = {},
            u = e.dataTypes.slice();
        if (u[1])
            for (a in e.converters) c[a.toLowerCase()] = e.converters[a];
        for (o = u.shift(); o;)
            if (e.responseFields[o] && (n[e.responseFields[o]] = t), !l && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), l = o, o = u.shift())
                if ("*" === o) o = l;
                else if ("*" !== l && l !== o) {
            if (a = c[l + " " + o] || c["* " + o], !a)
                for (i in c)
                    if (s = i.split(" "), s[1] === o && (a = c[l + " " + s[0]] || c["* " + s[0]])) {
                        a === !0 ? a = c[i] : c[i] !== !0 && (o = s[0], u.unshift(s[1]));
                        break
                    }
            if (a !== !0)
                if (a && e["throws"]) t = a(t);
                else try {
                    t = a(t)
                } catch (d) {
                    return {
                        state: "parsererror",
                        error: a ? d : "No conversion from " + l + " to " + o
                    }
                }
        }
        return {
            state: "success",
            data: t
        }
    }

    function R(e, t, n, r) {
        var i;
        if (ie.isArray(t)) ie.each(t, function(t, i) {
            n || Gt.test(e) ? r(e, i) : R(e + "[" + ("object" == typeof i ? t : "") + "]", i, n, r)
        });
        else if (n || "object" !== ie.type(t)) r(e, t);
        else
            for (i in t) R(e + "[" + i + "]", t[i], n, r)
    }

    function B() {
        try {
            return new e.XMLHttpRequest
        } catch (t) {}
    }

    function I() {
        try {
            return new e.ActiveXObject("Microsoft.XMLHTTP")
        } catch (t) {}
    }

    function G(e) {
        return ie.isWindow(e) ? e : 9 === e.nodeType ? e.defaultView || e.parentWindow : !1
    }
    var V = [],
        Z = V.slice,
        U = V.concat,
        J = V.push,
        K = V.indexOf,
        Q = {},
        ee = Q.toString,
        te = Q.hasOwnProperty,
        ne = {},
        re = "1.11.2",
        ie = function(e, t) {
            return new ie.fn.init(e, t)
        },
        oe = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
        ae = /^-ms-/,
        se = /-([\da-z])/gi,
        le = function(e, t) {
            return t.toUpperCase()
        };
    ie.fn = ie.prototype = {
        jquery: re,
        constructor: ie,
        selector: "",
        length: 0,
        toArray: function() {
            return Z.call(this)
        },
        get: function(e) {
            return null != e ? 0 > e ? this[e + this.length] : this[e] : Z.call(this)
        },
        pushStack: function(e) {
            var t = ie.merge(this.constructor(), e);
            return t.prevObject = this, t.context = this.context, t
        },
        each: function(e, t) {
            return ie.each(this, e, t)
        },
        map: function(e) {
            return this.pushStack(ie.map(this, function(t, n) {
                return e.call(t, n, t)
            }))
        },
        slice: function() {
            return this.pushStack(Z.apply(this, arguments))
        },
        first: function() {
            return this.eq(0)
        },
        last: function() {
            return this.eq(-1)
        },
        eq: function(e) {
            var t = this.length,
                n = +e + (0 > e ? t : 0);
            return this.pushStack(n >= 0 && t > n ? [this[n]] : [])
        },
        end: function() {
            return this.prevObject || this.constructor(null)
        },
        push: J,
        sort: V.sort,
        splice: V.splice
    }, ie.extend = ie.fn.extend = function() {
        var e, t, n, r, i, o, a = arguments[0] || {},
            s = 1,
            l = arguments.length,
            c = !1;
        for ("boolean" == typeof a && (c = a, a = arguments[s] || {}, s++), "object" == typeof a || ie.isFunction(a) || (a = {}), s === l && (a = this, s--); l > s; s++)
            if (null != (i = arguments[s]))
                for (r in i) e = a[r], n = i[r], a !== n && (c && n && (ie.isPlainObject(n) || (t = ie.isArray(n))) ? (t ? (t = !1, o = e && ie.isArray(e) ? e : []) : o = e && ie.isPlainObject(e) ? e : {}, a[r] = ie.extend(c, o, n)) : void 0 !== n && (a[r] = n));
        return a
    }, ie.extend({
        expando: "jQuery" + (re + Math.random()).replace(/\D/g, ""),
        isReady: !0,
        error: function(e) {
            throw new Error(e)
        },
        noop: function() {},
        isFunction: function(e) {
            return "function" === ie.type(e)
        },
        isArray: Array.isArray || function(e) {
            return "array" === ie.type(e)
        },
        isWindow: function(e) {
            return null != e && e == e.window
        },
        isNumeric: function(e) {
            return !ie.isArray(e) && e - parseFloat(e) + 1 >= 0
        },
        isEmptyObject: function(e) {
            var t;
            for (t in e) return !1;
            return !0
        },
        isPlainObject: function(e) {
            var t;
            if (!e || "object" !== ie.type(e) || e.nodeType || ie.isWindow(e)) return !1;
            try {
                if (e.constructor && !te.call(e, "constructor") && !te.call(e.constructor.prototype, "isPrototypeOf")) return !1
            } catch (n) {
                return !1
            }
            if (ne.ownLast)
                for (t in e) return te.call(e, t);
            for (t in e);
            return void 0 === t || te.call(e, t)
        },
        type: function(e) {
            return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? Q[ee.call(e)] || "object" : typeof e
        },
        globalEval: function(t) {
            t && ie.trim(t) && (e.execScript || function(t) {
                e.eval.call(e, t)
            })(t)
        },
        camelCase: function(e) {
            return e.replace(ae, "ms-").replace(se, le)
        },
        nodeName: function(e, t) {
            return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
        },
        each: function(e, t, r) {
            var i, o = 0,
                a = e.length,
                s = n(e);
            if (r) {
                if (s)
                    for (; a > o && (i = t.apply(e[o], r), i !== !1); o++);
                else
                    for (o in e)
                        if (i = t.apply(e[o], r), i === !1) break
            } else if (s)
                for (; a > o && (i = t.call(e[o], o, e[o]), i !== !1); o++);
            else
                for (o in e)
                    if (i = t.call(e[o], o, e[o]), i === !1) break; return e
        },
        trim: function(e) {
            return null == e ? "" : (e + "").replace(oe, "")
        },
        makeArray: function(e, t) {
            var r = t || [];
            return null != e && (n(Object(e)) ? ie.merge(r, "string" == typeof e ? [e] : e) : J.call(r, e)), r
        },
        inArray: function(e, t, n) {
            var r;
            if (t) {
                if (K) return K.call(t, e, n);
                for (r = t.length, n = n ? 0 > n ? Math.max(0, r + n) : n : 0; r > n; n++)
                    if (n in t && t[n] === e) return n
            }
            return -1
        },
        merge: function(e, t) {
            for (var n = +t.length, r = 0, i = e.length; n > r;) e[i++] = t[r++];
            if (n !== n)
                for (; void 0 !== t[r];) e[i++] = t[r++];
            return e.length = i, e
        },
        grep: function(e, t, n) {
            for (var r, i = [], o = 0, a = e.length, s = !n; a > o; o++) r = !t(e[o], o), r !== s && i.push(e[o]);
            return i
        },
        map: function(e, t, r) {
            var i, o = 0,
                a = e.length,
                s = n(e),
                l = [];
            if (s)
                for (; a > o; o++) i = t(e[o], o, r), null != i && l.push(i);
            else
                for (o in e) i = t(e[o], o, r), null != i && l.push(i);
            return U.apply([], l)
        },
        guid: 1,
        proxy: function(e, t) {
            var n, r, i;
            return "string" == typeof t && (i = e[t], t = e, e = i), ie.isFunction(e) ? (n = Z.call(arguments, 2), r = function() {
                return e.apply(t || this, n.concat(Z.call(arguments)))
            }, r.guid = e.guid = e.guid || ie.guid++, r) : void 0
        },
        now: function() {
            return +new Date
        },
        support: ne
    }), ie.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) {
        Q["[object " + t + "]"] = t.toLowerCase()
    });
    var ce = function(e) {
        function t(e, t, n, r) {
            var i, o, a, s, l, c, d, f, h, m;
            if ((t ? t.ownerDocument || t : W) !== M && L(t), t = t || M, n = n || [], s = t.nodeType, "string" != typeof e || !e || 1 !== s && 9 !== s && 11 !== s) return n;
            if (!r && P) {
                if (11 !== s && (i = ye.exec(e)))
                    if (a = i[1]) {
                        if (9 === s) {
                            if (o = t.getElementById(a), !o || !o.parentNode) return n;
                            if (o.id === a) return n.push(o), n
                        } else if (t.ownerDocument && (o = t.ownerDocument.getElementById(a)) && Y(t, o) && o.id === a) return n.push(o), n
                    } else {
                        if (i[2]) return K.apply(n, t.getElementsByTagName(e)), n;
                        if ((a = i[3]) && x.getElementsByClassName) return K.apply(n, t.getElementsByClassName(a)), n
                    }
                if (x.qsa && (!H || !H.test(e))) {
                    if (f = d = q, h = t, m = 1 !== s && e, 1 === s && "object" !== t.nodeName.toLowerCase()) {
                        for (c = C(e), (d = t.getAttribute("id")) ? f = d.replace(_e, "\\$&") : t.setAttribute("id", f), f = "[id='" + f + "'] ", l = c.length; l--;) c[l] = f + p(c[l]);
                        h = be.test(e) && u(t.parentNode) || t, m = c.join(",")
                    }
                    if (m) try {
                        return K.apply(n, h.querySelectorAll(m)), n
                    } catch (g) {} finally {
                        d || t.removeAttribute("id")
                    }
                }
            }
            return E(e.replace(le, "$1"), t, n, r)
        }

        function n() {
            function e(n, r) {
                return t.push(n + " ") > S.cacheLength && delete e[t.shift()], e[n + " "] = r
            }
            var t = [];
            return e
        }

        function r(e) {
            return e[q] = !0, e
        }

        function i(e) {
            var t = M.createElement("div");
            try {
                return !!e(t)
            } catch (n) {
                return !1
            } finally {
                t.parentNode && t.parentNode.removeChild(t), t = null
            }
        }

        function o(e, t) {
            for (var n = e.split("|"), r = e.length; r--;) S.attrHandle[n[r]] = t
        }

        function a(e, t) {
            var n = t && e,
                r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || G) - (~e.sourceIndex || G);
            if (r) return r;
            if (n)
                for (; n = n.nextSibling;)
                    if (n === t) return -1;
            return e ? 1 : -1
        }

        function s(e) {
            return function(t) {
                var n = t.nodeName.toLowerCase();
                return "input" === n && t.type === e
            }
        }

        function l(e) {
            return function(t) {
                var n = t.nodeName.toLowerCase();
                return ("input" === n || "button" === n) && t.type === e
            }
        }

        function c(e) {
            return r(function(t) {
                return t = +t, r(function(n, r) {
                    for (var i, o = e([], n.length, t), a = o.length; a--;) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
                })
            })
        }

        function u(e) {
            return e && "undefined" != typeof e.getElementsByTagName && e
        }

        function d() {}

        function p(e) {
            for (var t = 0, n = e.length, r = ""; n > t; t++) r += e[t].value;
            return r
        }

        function f(e, t, n) {
            var r = t.dir,
                i = n && "parentNode" === r,
                o = $++;
            return t.first ? function(t, n, o) {
                for (; t = t[r];)
                    if (1 === t.nodeType || i) return e(t, n, o)
            } : function(t, n, a) {
                var s, l, c = [O, o];
                if (a) {
                    for (; t = t[r];)
                        if ((1 === t.nodeType || i) && e(t, n, a)) return !0
                } else
                    for (; t = t[r];)
                        if (1 === t.nodeType || i) {
                            if (l = t[q] || (t[q] = {}), (s = l[r]) && s[0] === O && s[1] === o) return c[2] = s[2];
                            if (l[r] = c, c[2] = e(t, n, a)) return !0
                        }
            }
        }

        function h(e) {
            return e.length > 1 ? function(t, n, r) {
                for (var i = e.length; i--;)
                    if (!e[i](t, n, r)) return !1;
                return !0
            } : e[0]
        }

        function m(e, n, r) {
            for (var i = 0, o = n.length; o > i; i++) t(e, n[i], r);
            return r
        }

        function g(e, t, n, r, i) {
            for (var o, a = [], s = 0, l = e.length, c = null != t; l > s; s++)(o = e[s]) && (!n || n(o, r, i)) && (a.push(o), c && t.push(s));
            return a
        }

        function v(e, t, n, i, o, a) {
            return i && !i[q] && (i = v(i)), o && !o[q] && (o = v(o, a)), r(function(r, a, s, l) {
                var c, u, d, p = [],
                    f = [],
                    h = a.length,
                    v = r || m(t || "*", s.nodeType ? [s] : s, []),
                    y = !e || !r && t ? v : g(v, p, e, s, l),
                    b = n ? o || (r ? e : h || i) ? [] : a : y;
                if (n && n(y, b, s, l), i)
                    for (c = g(b, f), i(c, [], s, l), u = c.length; u--;)(d = c[u]) && (b[f[u]] = !(y[f[u]] = d));
                if (r) {
                    if (o || e) {
                        if (o) {
                            for (c = [], u = b.length; u--;)(d = b[u]) && c.push(y[u] = d);
                            o(null, b = [], c, l)
                        }
                        for (u = b.length; u--;)(d = b[u]) && (c = o ? ee(r, d) : p[u]) > -1 && (r[c] = !(a[c] = d))
                    }
                } else b = g(b === a ? b.splice(h, b.length) : b), o ? o(null, a, b, l) : K.apply(a, b)
            })
        }

        function y(e) {
            for (var t, n, r, i = e.length, o = S.relative[e[0].type], a = o || S.relative[" "], s = o ? 1 : 0, l = f(function(e) {
                    return e === t
                }, a, !0), c = f(function(e) {
                    return ee(t, e) > -1
                }, a, !0), u = [function(e, n, r) {
                    var i = !o && (r || n !== N) || ((t = n).nodeType ? l(e, n, r) : c(e, n, r));
                    return t = null, i
                }]; i > s; s++)
                if (n = S.relative[e[s].type]) u = [f(h(u), n)];
                else {
                    if (n = S.filter[e[s].type].apply(null, e[s].matches), n[q]) {
                        for (r = ++s; i > r && !S.relative[e[r].type]; r++);
                        return v(s > 1 && h(u), s > 1 && p(e.slice(0, s - 1).concat({
                            value: " " === e[s - 2].type ? "*" : ""
                        })).replace(le, "$1"), n, r > s && y(e.slice(s, r)), i > r && y(e = e.slice(r)), i > r && p(e))
                    }
                    u.push(n)
                }
            return h(u)
        }

        function b(e, n) {
            var i = n.length > 0,
                o = e.length > 0,
                a = function(r, a, s, l, c) {
                    var u, d, p, f = 0,
                        h = "0",
                        m = r && [],
                        v = [],
                        y = N,
                        b = r || o && S.find.TAG("*", c),
                        _ = O += null == y ? 1 : Math.random() || .1,
                        x = b.length;
                    for (c && (N = a !== M && a); h !== x && null != (u = b[h]); h++) {
                        if (o && u) {
                            for (d = 0; p = e[d++];)
                                if (p(u, a, s)) {
                                    l.push(u);
                                    break
                                }
                            c && (O = _)
                        }
                        i && ((u = !p && u) && f--, r && m.push(u))
                    }
                    if (f += h, i && h !== f) {
                        for (d = 0; p = n[d++];) p(m, v, a, s);
                        if (r) {
                            if (f > 0)
                                for (; h--;) m[h] || v[h] || (v[h] = U.call(l));
                            v = g(v)
                        }
                        K.apply(l, v), c && !r && v.length > 0 && f + n.length > 1 && t.uniqueSort(l)
                    }
                    return c && (O = _, N = y), m
                };
            return i ? r(a) : a
        }
        var _, x, S, w, T, C, k, E, N, D, A, L, M, j, P, H, z, X, Y, q = "sizzle" + 1 * new Date,
            W = e.document,
            O = 0,
            $ = 0,
            F = n(),
            R = n(),
            B = n(),
            I = function(e, t) {
                return e === t && (A = !0), 0
            },
            G = 1 << 31,
            V = {}.hasOwnProperty,
            Z = [],
            U = Z.pop,
            J = Z.push,
            K = Z.push,
            Q = Z.slice,
            ee = function(e, t) {
                for (var n = 0, r = e.length; r > n; n++)
                    if (e[n] === t) return n;
                return -1
            },
            te = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
            ne = "[\\x20\\t\\r\\n\\f]",
            re = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
            ie = re.replace("w", "w#"),
            oe = "\\[" + ne + "*(" + re + ")(?:" + ne + "*([*^$|!~]?=)" + ne + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + ie + "))|)" + ne + "*\\]",
            ae = ":(" + re + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + oe + ")*)|.*)\\)|)",
            se = new RegExp(ne + "+", "g"),
            le = new RegExp("^" + ne + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ne + "+$", "g"),
            ce = new RegExp("^" + ne + "*," + ne + "*"),
            ue = new RegExp("^" + ne + "*([>+~]|" + ne + ")" + ne + "*"),
            de = new RegExp("=" + ne + "*([^\\]'\"]*?)" + ne + "*\\]", "g"),
            pe = new RegExp(ae),
            fe = new RegExp("^" + ie + "$"),
            he = {
                ID: new RegExp("^#(" + re + ")"),
                CLASS: new RegExp("^\\.(" + re + ")"),
                TAG: new RegExp("^(" + re.replace("w", "w*") + ")"),
                ATTR: new RegExp("^" + oe),
                PSEUDO: new RegExp("^" + ae),
                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ne + "*(even|odd|(([+-]|)(\\d*)n|)" + ne + "*(?:([+-]|)" + ne + "*(\\d+)|))" + ne + "*\\)|)", "i"),
                bool: new RegExp("^(?:" + te + ")$", "i"),
                needsContext: new RegExp("^" + ne + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ne + "*((?:-\\d)?\\d*)" + ne + "*\\)|)(?=[^-]|$)", "i")
            },
            me = /^(?:input|select|textarea|button)$/i,
            ge = /^h\d$/i,
            ve = /^[^{]+\{\s*\[native \w/,
            ye = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
            be = /[+~]/,
            _e = /'|\\/g,
            xe = new RegExp("\\\\([\\da-f]{1,6}" + ne + "?|(" + ne + ")|.)", "ig"),
            Se = function(e, t, n) {
                var r = "0x" + t - 65536;
                return r !== r || n ? t : 0 > r ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
            },
            we = function() {
                L()
            };
        try {
            K.apply(Z = Q.call(W.childNodes), W.childNodes), Z[W.childNodes.length].nodeType
        } catch (Te) {
            K = {
                apply: Z.length ? function(e, t) {
                    J.apply(e, Q.call(t))
                } : function(e, t) {
                    for (var n = e.length, r = 0; e[n++] = t[r++];);
                    e.length = n - 1
                }
            }
        }
        x = t.support = {}, T = t.isXML = function(e) {
            var t = e && (e.ownerDocument || e).documentElement;
            return t ? "HTML" !== t.nodeName : !1
        }, L = t.setDocument = function(e) {
            var t, n, r = e ? e.ownerDocument || e : W;
            return r !== M && 9 === r.nodeType && r.documentElement ? (M = r, j = r.documentElement, n = r.defaultView, n && n !== n.top && (n.addEventListener ? n.addEventListener("unload", we, !1) : n.attachEvent && n.attachEvent("onunload", we)), P = !T(r), x.attributes = i(function(e) {
                return e.className = "i", !e.getAttribute("className")
            }), x.getElementsByTagName = i(function(e) {
                return e.appendChild(r.createComment("")), !e.getElementsByTagName("*").length
            }), x.getElementsByClassName = ve.test(r.getElementsByClassName), x.getById = i(function(e) {
                return j.appendChild(e).id = q, !r.getElementsByName || !r.getElementsByName(q).length
            }), x.getById ? (S.find.ID = function(e, t) {
                if ("undefined" != typeof t.getElementById && P) {
                    var n = t.getElementById(e);
                    return n && n.parentNode ? [n] : []
                }
            }, S.filter.ID = function(e) {
                var t = e.replace(xe, Se);
                return function(e) {
                    return e.getAttribute("id") === t
                }
            }) : (delete S.find.ID, S.filter.ID = function(e) {
                var t = e.replace(xe, Se);
                return function(e) {
                    var n = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
                    return n && n.value === t
                }
            }), S.find.TAG = x.getElementsByTagName ? function(e, t) {
                return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : x.qsa ? t.querySelectorAll(e) : void 0
            } : function(e, t) {
                var n, r = [],
                    i = 0,
                    o = t.getElementsByTagName(e);
                if ("*" === e) {
                    for (; n = o[i++];) 1 === n.nodeType && r.push(n);
                    return r
                }
                return o
            }, S.find.CLASS = x.getElementsByClassName && function(e, t) {
                return P ? t.getElementsByClassName(e) : void 0
            }, z = [], H = [], (x.qsa = ve.test(r.querySelectorAll)) && (i(function(e) {
                j.appendChild(e).innerHTML = "<a id='" + q + "'></a><select id='" + q + "-\f]' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && H.push("[*^$]=" + ne + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || H.push("\\[" + ne + "*(?:value|" + te + ")"), e.querySelectorAll("[id~=" + q + "-]").length || H.push("~="), e.querySelectorAll(":checked").length || H.push(":checked"), e.querySelectorAll("a#" + q + "+*").length || H.push(".#.+[+~]")
            }), i(function(e) {
                var t = r.createElement("input");
                t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && H.push("name" + ne + "*[*^$|!~]?="), e.querySelectorAll(":enabled").length || H.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), H.push(",.*:")
            })), (x.matchesSelector = ve.test(X = j.matches || j.webkitMatchesSelector || j.mozMatchesSelector || j.oMatchesSelector || j.msMatchesSelector)) && i(function(e) {
                x.disconnectedMatch = X.call(e, "div"), X.call(e, "[s!='']:x"), z.push("!=", ae)
            }), H = H.length && new RegExp(H.join("|")), z = z.length && new RegExp(z.join("|")), t = ve.test(j.compareDocumentPosition), Y = t || ve.test(j.contains) ? function(e, t) {
                var n = 9 === e.nodeType ? e.documentElement : e,
                    r = t && t.parentNode;
                return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
            } : function(e, t) {
                if (t)
                    for (; t = t.parentNode;)
                        if (t === e) return !0;
                return !1
            }, I = t ? function(e, t) {
                if (e === t) return A = !0, 0;
                var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
                return n ? n : (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1, 1 & n || !x.sortDetached && t.compareDocumentPosition(e) === n ? e === r || e.ownerDocument === W && Y(W, e) ? -1 : t === r || t.ownerDocument === W && Y(W, t) ? 1 : D ? ee(D, e) - ee(D, t) : 0 : 4 & n ? -1 : 1)
            } : function(e, t) {
                if (e === t) return A = !0, 0;
                var n, i = 0,
                    o = e.parentNode,
                    s = t.parentNode,
                    l = [e],
                    c = [t];
                if (!o || !s) return e === r ? -1 : t === r ? 1 : o ? -1 : s ? 1 : D ? ee(D, e) - ee(D, t) : 0;
                if (o === s) return a(e, t);
                for (n = e; n = n.parentNode;) l.unshift(n);
                for (n = t; n = n.parentNode;) c.unshift(n);
                for (; l[i] === c[i];) i++;
                return i ? a(l[i], c[i]) : l[i] === W ? -1 : c[i] === W ? 1 : 0
            }, r) : M
        }, t.matches = function(e, n) {
            return t(e, null, null, n)
        }, t.matchesSelector = function(e, n) {
            if ((e.ownerDocument || e) !== M && L(e), n = n.replace(de, "='$1']"), !(!x.matchesSelector || !P || z && z.test(n) || H && H.test(n))) try {
                var r = X.call(e, n);
                if (r || x.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r
            } catch (i) {}
            return t(n, M, null, [e]).length > 0
        }, t.contains = function(e, t) {
            return (e.ownerDocument || e) !== M && L(e), Y(e, t)
        }, t.attr = function(e, t) {
            (e.ownerDocument || e) !== M && L(e);
            var n = S.attrHandle[t.toLowerCase()],
                r = n && V.call(S.attrHandle, t.toLowerCase()) ? n(e, t, !P) : void 0;
            return void 0 !== r ? r : x.attributes || !P ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
        }, t.error = function(e) {
            throw new Error("Syntax error, unrecognized expression: " + e)
        }, t.uniqueSort = function(e) {
            var t, n = [],
                r = 0,
                i = 0;
            if (A = !x.detectDuplicates, D = !x.sortStable && e.slice(0), e.sort(I), A) {
                for (; t = e[i++];) t === e[i] && (r = n.push(i));
                for (; r--;) e.splice(n[r], 1)
            }
            return D = null, e
        }, w = t.getText = function(e) {
            var t, n = "",
                r = 0,
                i = e.nodeType;
            if (i) {
                if (1 === i || 9 === i || 11 === i) {
                    if ("string" == typeof e.textContent) return e.textContent;
                    for (e = e.firstChild; e; e = e.nextSibling) n += w(e)
                } else if (3 === i || 4 === i) return e.nodeValue
            } else
                for (; t = e[r++];) n += w(t);
            return n
        }, S = t.selectors = {
            cacheLength: 50,
            createPseudo: r,
            match: he,
            attrHandle: {},
            find: {},
            relative: {
                ">": {
                    dir: "parentNode",
                    first: !0
                },
                " ": {
                    dir: "parentNode"
                },
                "+": {
                    dir: "previousSibling",
                    first: !0
                },
                "~": {
                    dir: "previousSibling"
                }
            },
            preFilter: {
                ATTR: function(e) {
                    return e[1] = e[1].replace(xe, Se), e[3] = (e[3] || e[4] || e[5] || "").replace(xe, Se), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
                },
                CHILD: function(e) {
                    return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || t.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && t.error(e[0]), e
                },
                PSEUDO: function(e) {
                    var t, n = !e[6] && e[2];
                    return he.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && pe.test(n) && (t = C(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
                }
            },
            filter: {
                TAG: function(e) {
                    var t = e.replace(xe, Se).toLowerCase();
                    return "*" === e ? function() {
                        return !0
                    } : function(e) {
                        return e.nodeName && e.nodeName.toLowerCase() === t
                    }
                },
                CLASS: function(e) {
                    var t = F[e + " "];
                    return t || (t = new RegExp("(^|" + ne + ")" + e + "(" + ne + "|$)")) && F(e, function(e) {
                        return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
                    })
                },
                ATTR: function(e, n, r) {
                    return function(i) {
                        var o = t.attr(i, e);
                        return null == o ? "!=" === n : n ? (o += "", "=" === n ? o === r : "!=" === n ? o !== r : "^=" === n ? r && 0 === o.indexOf(r) : "*=" === n ? r && o.indexOf(r) > -1 : "$=" === n ? r && o.slice(-r.length) === r : "~=" === n ? (" " + o.replace(se, " ") + " ").indexOf(r) > -1 : "|=" === n ? o === r || o.slice(0, r.length + 1) === r + "-" : !1) : !0
                    }
                },
                CHILD: function(e, t, n, r, i) {
                    var o = "nth" !== e.slice(0, 3),
                        a = "last" !== e.slice(-4),
                        s = "of-type" === t;
                    return 1 === r && 0 === i ? function(e) {
                        return !!e.parentNode
                    } : function(t, n, l) {
                        var c, u, d, p, f, h, m = o !== a ? "nextSibling" : "previousSibling",
                            g = t.parentNode,
                            v = s && t.nodeName.toLowerCase(),
                            y = !l && !s;
                        if (g) {
                            if (o) {
                                for (; m;) {
                                    for (d = t; d = d[m];)
                                        if (s ? d.nodeName.toLowerCase() === v : 1 === d.nodeType) return !1;
                                    h = m = "only" === e && !h && "nextSibling"
                                }
                                return !0
                            }
                            if (h = [a ? g.firstChild : g.lastChild], a && y) {
                                for (u = g[q] || (g[q] = {}), c = u[e] || [], f = c[0] === O && c[1], p = c[0] === O && c[2], d = f && g.childNodes[f]; d = ++f && d && d[m] || (p = f = 0) || h.pop();)
                                    if (1 === d.nodeType && ++p && d === t) {
                                        u[e] = [O, f, p];
                                        break
                                    }
                            } else if (y && (c = (t[q] || (t[q] = {}))[e]) && c[0] === O) p = c[1];
                            else
                                for (;
                                    (d = ++f && d && d[m] || (p = f = 0) || h.pop()) && ((s ? d.nodeName.toLowerCase() !== v : 1 !== d.nodeType) || !++p || (y && ((d[q] || (d[q] = {}))[e] = [O, p]), d !== t)););
                            return p -= i, p === r || p % r === 0 && p / r >= 0
                        }
                    }
                },
                PSEUDO: function(e, n) {
                    var i, o = S.pseudos[e] || S.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
                    return o[q] ? o(n) : o.length > 1 ? (i = [e, e, "", n], S.setFilters.hasOwnProperty(e.toLowerCase()) ? r(function(e, t) {
                        for (var r, i = o(e, n), a = i.length; a--;) r = ee(e, i[a]), e[r] = !(t[r] = i[a])
                    }) : function(e) {
                        return o(e, 0, i)
                    }) : o
                }
            },
            pseudos: {
                not: r(function(e) {
                    var t = [],
                        n = [],
                        i = k(e.replace(le, "$1"));
                    return i[q] ? r(function(e, t, n, r) {
                        for (var o, a = i(e, null, r, []), s = e.length; s--;)(o = a[s]) && (e[s] = !(t[s] = o))
                    }) : function(e, r, o) {
                        return t[0] = e, i(t, null, o, n), t[0] = null, !n.pop()
                    }
                }),
                has: r(function(e) {
                    return function(n) {
                        return t(e, n).length > 0
                    }
                }),
                contains: r(function(e) {
                    return e = e.replace(xe, Se),
                        function(t) {
                            return (t.textContent || t.innerText || w(t)).indexOf(e) > -1
                        }
                }),
                lang: r(function(e) {
                    return fe.test(e || "") || t.error("unsupported lang: " + e), e = e.replace(xe, Se).toLowerCase(),
                        function(t) {
                            var n;
                            do
                                if (n = P ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return n = n.toLowerCase(), n === e || 0 === n.indexOf(e + "-");
                            while ((t = t.parentNode) && 1 === t.nodeType);
                            return !1
                        }
                }),
                target: function(t) {
                    var n = e.location && e.location.hash;
                    return n && n.slice(1) === t.id
                },
                root: function(e) {
                    return e === j
                },
                focus: function(e) {
                    return e === M.activeElement && (!M.hasFocus || M.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                },
                enabled: function(e) {
                    return e.disabled === !1
                },
                disabled: function(e) {
                    return e.disabled === !0
                },
                checked: function(e) {
                    var t = e.nodeName.toLowerCase();
                    return "input" === t && !!e.checked || "option" === t && !!e.selected
                },
                selected: function(e) {
                    return e.parentNode && e.parentNode.selectedIndex, e.selected === !0
                },
                empty: function(e) {
                    for (e = e.firstChild; e; e = e.nextSibling)
                        if (e.nodeType < 6) return !1;
                    return !0
                },
                parent: function(e) {
                    return !S.pseudos.empty(e)
                },
                header: function(e) {
                    return ge.test(e.nodeName)
                },
                input: function(e) {
                    return me.test(e.nodeName)
                },
                button: function(e) {
                    var t = e.nodeName.toLowerCase();
                    return "input" === t && "button" === e.type || "button" === t
                },
                text: function(e) {
                    var t;
                    return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
                },
                first: c(function() {
                    return [0]
                }),
                last: c(function(e, t) {
                    return [t - 1]
                }),
                eq: c(function(e, t, n) {
                    return [0 > n ? n + t : n]
                }),
                even: c(function(e, t) {
                    for (var n = 0; t > n; n += 2) e.push(n);
                    return e
                }),
                odd: c(function(e, t) {
                    for (var n = 1; t > n; n += 2) e.push(n);
                    return e
                }),
                lt: c(function(e, t, n) {
                    for (var r = 0 > n ? n + t : n; --r >= 0;) e.push(r);
                    return e
                }),
                gt: c(function(e, t, n) {
                    for (var r = 0 > n ? n + t : n; ++r < t;) e.push(r);
                    return e
                })
            }
        }, S.pseudos.nth = S.pseudos.eq;
        for (_ in {
                radio: !0,
                checkbox: !0,
                file: !0,
                password: !0,
                image: !0
            }) S.pseudos[_] = s(_);
        for (_ in {
                submit: !0,
                reset: !0
            }) S.pseudos[_] = l(_);
        return d.prototype = S.filters = S.pseudos, S.setFilters = new d, C = t.tokenize = function(e, n) {
            var r, i, o, a, s, l, c, u = R[e + " "];
            if (u) return n ? 0 : u.slice(0);
            for (s = e, l = [], c = S.preFilter; s;) {
                (!r || (i = ce.exec(s))) && (i && (s = s.slice(i[0].length) || s), l.push(o = [])), r = !1, (i = ue.exec(s)) && (r = i.shift(), o.push({
                    value: r,
                    type: i[0].replace(le, " ")
                }), s = s.slice(r.length));
                for (a in S.filter) !(i = he[a].exec(s)) || c[a] && !(i = c[a](i)) || (r = i.shift(),
                    o.push({
                        value: r,
                        type: a,
                        matches: i
                    }), s = s.slice(r.length));
                if (!r) break
            }
            return n ? s.length : s ? t.error(e) : R(e, l).slice(0)
        }, k = t.compile = function(e, t) {
            var n, r = [],
                i = [],
                o = B[e + " "];
            if (!o) {
                for (t || (t = C(e)), n = t.length; n--;) o = y(t[n]), o[q] ? r.push(o) : i.push(o);
                o = B(e, b(i, r)), o.selector = e
            }
            return o
        }, E = t.select = function(e, t, n, r) {
            var i, o, a, s, l, c = "function" == typeof e && e,
                d = !r && C(e = c.selector || e);
            if (n = n || [], 1 === d.length) {
                if (o = d[0] = d[0].slice(0), o.length > 2 && "ID" === (a = o[0]).type && x.getById && 9 === t.nodeType && P && S.relative[o[1].type]) {
                    if (t = (S.find.ID(a.matches[0].replace(xe, Se), t) || [])[0], !t) return n;
                    c && (t = t.parentNode), e = e.slice(o.shift().value.length)
                }
                for (i = he.needsContext.test(e) ? 0 : o.length; i-- && (a = o[i], !S.relative[s = a.type]);)
                    if ((l = S.find[s]) && (r = l(a.matches[0].replace(xe, Se), be.test(o[0].type) && u(t.parentNode) || t))) {
                        if (o.splice(i, 1), e = r.length && p(o), !e) return K.apply(n, r), n;
                        break
                    }
            }
            return (c || k(e, d))(r, t, !P, n, be.test(e) && u(t.parentNode) || t), n
        }, x.sortStable = q.split("").sort(I).join("") === q, x.detectDuplicates = !!A, L(), x.sortDetached = i(function(e) {
            return 1 & e.compareDocumentPosition(M.createElement("div"))
        }), i(function(e) {
            return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
        }) || o("type|href|height|width", function(e, t, n) {
            return n ? void 0 : e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
        }), x.attributes && i(function(e) {
            return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
        }) || o("value", function(e, t, n) {
            return n || "input" !== e.nodeName.toLowerCase() ? void 0 : e.defaultValue
        }), i(function(e) {
            return null == e.getAttribute("disabled")
        }) || o(te, function(e, t, n) {
            var r;
            return n ? void 0 : e[t] === !0 ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
        }), t
    }(e);
    ie.find = ce, ie.expr = ce.selectors, ie.expr[":"] = ie.expr.pseudos, ie.unique = ce.uniqueSort, ie.text = ce.getText, ie.isXMLDoc = ce.isXML, ie.contains = ce.contains;
    var ue = ie.expr.match.needsContext,
        de = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
        pe = /^.[^:#\[\.,]*$/;
    ie.filter = function(e, t, n) {
        var r = t[0];
        return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? ie.find.matchesSelector(r, e) ? [r] : [] : ie.find.matches(e, ie.grep(t, function(e) {
            return 1 === e.nodeType
        }))
    }, ie.fn.extend({
        find: function(e) {
            var t, n = [],
                r = this,
                i = r.length;
            if ("string" != typeof e) return this.pushStack(ie(e).filter(function() {
                for (t = 0; i > t; t++)
                    if (ie.contains(r[t], this)) return !0
            }));
            for (t = 0; i > t; t++) ie.find(e, r[t], n);
            return n = this.pushStack(i > 1 ? ie.unique(n) : n), n.selector = this.selector ? this.selector + " " + e : e, n
        },
        filter: function(e) {
            return this.pushStack(r(this, e || [], !1))
        },
        not: function(e) {
            return this.pushStack(r(this, e || [], !0))
        },
        is: function(e) {
            return !!r(this, "string" == typeof e && ue.test(e) ? ie(e) : e || [], !1).length
        }
    });
    var fe, he = e.document,
        me = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
        ge = ie.fn.init = function(e, t) {
            var n, r;
            if (!e) return this;
            if ("string" == typeof e) {
                if (n = "<" === e.charAt(0) && ">" === e.charAt(e.length - 1) && e.length >= 3 ? [null, e, null] : me.exec(e), !n || !n[1] && t) return !t || t.jquery ? (t || fe).find(e) : this.constructor(t).find(e);
                if (n[1]) {
                    if (t = t instanceof ie ? t[0] : t, ie.merge(this, ie.parseHTML(n[1], t && t.nodeType ? t.ownerDocument || t : he, !0)), de.test(n[1]) && ie.isPlainObject(t))
                        for (n in t) ie.isFunction(this[n]) ? this[n](t[n]) : this.attr(n, t[n]);
                    return this
                }
                if (r = he.getElementById(n[2]), r && r.parentNode) {
                    if (r.id !== n[2]) return fe.find(e);
                    this.length = 1, this[0] = r
                }
                return this.context = he, this.selector = e, this
            }
            return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : ie.isFunction(e) ? "undefined" != typeof fe.ready ? fe.ready(e) : e(ie) : (void 0 !== e.selector && (this.selector = e.selector, this.context = e.context), ie.makeArray(e, this))
        };
    ge.prototype = ie.fn, fe = ie(he);
    var ve = /^(?:parents|prev(?:Until|All))/,
        ye = {
            children: !0,
            contents: !0,
            next: !0,
            prev: !0
        };
    ie.extend({
        dir: function(e, t, n) {
            for (var r = [], i = e[t]; i && 9 !== i.nodeType && (void 0 === n || 1 !== i.nodeType || !ie(i).is(n));) 1 === i.nodeType && r.push(i), i = i[t];
            return r
        },
        sibling: function(e, t) {
            for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
            return n
        }
    }), ie.fn.extend({
        has: function(e) {
            var t, n = ie(e, this),
                r = n.length;
            return this.filter(function() {
                for (t = 0; r > t; t++)
                    if (ie.contains(this, n[t])) return !0
            })
        },
        closest: function(e, t) {
            for (var n, r = 0, i = this.length, o = [], a = ue.test(e) || "string" != typeof e ? ie(e, t || this.context) : 0; i > r; r++)
                for (n = this[r]; n && n !== t; n = n.parentNode)
                    if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && ie.find.matchesSelector(n, e))) {
                        o.push(n);
                        break
                    }
            return this.pushStack(o.length > 1 ? ie.unique(o) : o)
        },
        index: function(e) {
            return e ? "string" == typeof e ? ie.inArray(this[0], ie(e)) : ie.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
        },
        add: function(e, t) {
            return this.pushStack(ie.unique(ie.merge(this.get(), ie(e, t))))
        },
        addBack: function(e) {
            return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
        }
    }), ie.each({
        parent: function(e) {
            var t = e.parentNode;
            return t && 11 !== t.nodeType ? t : null
        },
        parents: function(e) {
            return ie.dir(e, "parentNode")
        },
        parentsUntil: function(e, t, n) {
            return ie.dir(e, "parentNode", n)
        },
        next: function(e) {
            return i(e, "nextSibling")
        },
        prev: function(e) {
            return i(e, "previousSibling")
        },
        nextAll: function(e) {
            return ie.dir(e, "nextSibling")
        },
        prevAll: function(e) {
            return ie.dir(e, "previousSibling")
        },
        nextUntil: function(e, t, n) {
            return ie.dir(e, "nextSibling", n)
        },
        prevUntil: function(e, t, n) {
            return ie.dir(e, "previousSibling", n)
        },
        siblings: function(e) {
            return ie.sibling((e.parentNode || {}).firstChild, e)
        },
        children: function(e) {
            return ie.sibling(e.firstChild)
        },
        contents: function(e) {
            return ie.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : ie.merge([], e.childNodes)
        }
    }, function(e, t) {
        ie.fn[e] = function(n, r) {
            var i = ie.map(this, t, n);
            return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = ie.filter(r, i)), this.length > 1 && (ye[e] || (i = ie.unique(i)), ve.test(e) && (i = i.reverse())), this.pushStack(i)
        }
    });
    var be = /\S+/g,
        _e = {};
    ie.Callbacks = function(e) {
        e = "string" == typeof e ? _e[e] || o(e) : ie.extend({}, e);
        var t, n, r, i, a, s, l = [],
            c = !e.once && [],
            u = function(o) {
                for (n = e.memory && o, r = !0, a = s || 0, s = 0, i = l.length, t = !0; l && i > a; a++)
                    if (l[a].apply(o[0], o[1]) === !1 && e.stopOnFalse) {
                        n = !1;
                        break
                    }
                t = !1, l && (c ? c.length && u(c.shift()) : n ? l = [] : d.disable())
            },
            d = {
                add: function() {
                    if (l) {
                        var r = l.length;
                        ! function o(t) {
                            ie.each(t, function(t, n) {
                                var r = ie.type(n);
                                "function" === r ? e.unique && d.has(n) || l.push(n) : n && n.length && "string" !== r && o(n)
                            })
                        }(arguments), t ? i = l.length : n && (s = r, u(n))
                    }
                    return this
                },
                remove: function() {
                    return l && ie.each(arguments, function(e, n) {
                        for (var r;
                            (r = ie.inArray(n, l, r)) > -1;) l.splice(r, 1), t && (i >= r && i--, a >= r && a--)
                    }), this
                },
                has: function(e) {
                    return e ? ie.inArray(e, l) > -1 : !(!l || !l.length)
                },
                empty: function() {
                    return l = [], i = 0, this
                },
                disable: function() {
                    return l = c = n = void 0, this
                },
                disabled: function() {
                    return !l
                },
                lock: function() {
                    return c = void 0, n || d.disable(), this
                },
                locked: function() {
                    return !c
                },
                fireWith: function(e, n) {
                    return !l || r && !c || (n = n || [], n = [e, n.slice ? n.slice() : n], t ? c.push(n) : u(n)), this
                },
                fire: function() {
                    return d.fireWith(this, arguments), this
                },
                fired: function() {
                    return !!r
                }
            };
        return d
    }, ie.extend({
        Deferred: function(e) {
            var t = [
                    ["resolve", "done", ie.Callbacks("once memory"), "resolved"],
                    ["reject", "fail", ie.Callbacks("once memory"), "rejected"],
                    ["notify", "progress", ie.Callbacks("memory")]
                ],
                n = "pending",
                r = {
                    state: function() {
                        return n
                    },
                    always: function() {
                        return i.done(arguments).fail(arguments), this
                    },
                    then: function() {
                        var e = arguments;
                        return ie.Deferred(function(n) {
                            ie.each(t, function(t, o) {
                                var a = ie.isFunction(e[t]) && e[t];
                                i[o[1]](function() {
                                    var e = a && a.apply(this, arguments);
                                    e && ie.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[o[0] + "With"](this === r ? n.promise() : this, a ? [e] : arguments)
                                })
                            }), e = null
                        }).promise()
                    },
                    promise: function(e) {
                        return null != e ? ie.extend(e, r) : r
                    }
                },
                i = {};
            return r.pipe = r.then, ie.each(t, function(e, o) {
                var a = o[2],
                    s = o[3];
                r[o[1]] = a.add, s && a.add(function() {
                    n = s
                }, t[1 ^ e][2].disable, t[2][2].lock), i[o[0]] = function() {
                    return i[o[0] + "With"](this === i ? r : this, arguments), this
                }, i[o[0] + "With"] = a.fireWith
            }), r.promise(i), e && e.call(i, i), i
        },
        when: function(e) {
            var t, n, r, i = 0,
                o = Z.call(arguments),
                a = o.length,
                s = 1 !== a || e && ie.isFunction(e.promise) ? a : 0,
                l = 1 === s ? e : ie.Deferred(),
                c = function(e, n, r) {
                    return function(i) {
                        n[e] = this, r[e] = arguments.length > 1 ? Z.call(arguments) : i, r === t ? l.notifyWith(n, r) : --s || l.resolveWith(n, r)
                    }
                };
            if (a > 1)
                for (t = new Array(a), n = new Array(a), r = new Array(a); a > i; i++) o[i] && ie.isFunction(o[i].promise) ? o[i].promise().done(c(i, r, o)).fail(l.reject).progress(c(i, n, t)) : --s;
            return s || l.resolveWith(r, o), l.promise()
        }
    });
    var xe;
    ie.fn.ready = function(e) {
        return ie.ready.promise().done(e), this
    }, ie.extend({
        isReady: !1,
        readyWait: 1,
        holdReady: function(e) {
            e ? ie.readyWait++ : ie.ready(!0)
        },
        ready: function(e) {
            if (e === !0 ? !--ie.readyWait : !ie.isReady) {
                if (!he.body) return setTimeout(ie.ready);
                ie.isReady = !0, e !== !0 && --ie.readyWait > 0 || (xe.resolveWith(he, [ie]), ie.fn.triggerHandler && (ie(he).triggerHandler("ready"), ie(he).off("ready")))
            }
        }
    }), ie.ready.promise = function(t) {
        if (!xe)
            if (xe = ie.Deferred(), "complete" === he.readyState) setTimeout(ie.ready);
            else if (he.addEventListener) he.addEventListener("DOMContentLoaded", s, !1), e.addEventListener("load", s, !1);
        else {
            he.attachEvent("onreadystatechange", s), e.attachEvent("onload", s);
            var n = !1;
            try {
                n = null == e.frameElement && he.documentElement
            } catch (r) {}
            n && n.doScroll && ! function i() {
                if (!ie.isReady) {
                    try {
                        n.doScroll("left")
                    } catch (e) {
                        return setTimeout(i, 50)
                    }
                    a(), ie.ready()
                }
            }()
        }
        return xe.promise(t)
    };
    var Se, we = "undefined";
    for (Se in ie(ne)) break;
    ne.ownLast = "0" !== Se, ne.inlineBlockNeedsLayout = !1, ie(function() {
            var e, t, n, r;
            n = he.getElementsByTagName("body")[0], n && n.style && (t = he.createElement("div"), r = he.createElement("div"), r.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", n.appendChild(r).appendChild(t), typeof t.style.zoom !== we && (t.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1", ne.inlineBlockNeedsLayout = e = 3 === t.offsetWidth, e && (n.style.zoom = 1)), n.removeChild(r))
        }),
        function() {
            var e = he.createElement("div");
            if (null == ne.deleteExpando) {
                ne.deleteExpando = !0;
                try {
                    delete e.test
                } catch (t) {
                    ne.deleteExpando = !1
                }
            }
            e = null
        }(), ie.acceptData = function(e) {
            var t = ie.noData[(e.nodeName + " ").toLowerCase()],
                n = +e.nodeType || 1;
            return 1 !== n && 9 !== n ? !1 : !t || t !== !0 && e.getAttribute("classid") === t
        };
    var Te = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
        Ce = /([A-Z])/g;
    ie.extend({
        cache: {},
        noData: {
            "applet ": !0,
            "embed ": !0,
            "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        },
        hasData: function(e) {
            return e = e.nodeType ? ie.cache[e[ie.expando]] : e[ie.expando], !!e && !c(e)
        },
        data: function(e, t, n) {
            return u(e, t, n)
        },
        removeData: function(e, t) {
            return d(e, t)
        },
        _data: function(e, t, n) {
            return u(e, t, n, !0)
        },
        _removeData: function(e, t) {
            return d(e, t, !0)
        }
    }), ie.fn.extend({
        data: function(e, t) {
            var n, r, i, o = this[0],
                a = o && o.attributes;
            if (void 0 === e) {
                if (this.length && (i = ie.data(o), 1 === o.nodeType && !ie._data(o, "parsedAttrs"))) {
                    for (n = a.length; n--;) a[n] && (r = a[n].name, 0 === r.indexOf("data-") && (r = ie.camelCase(r.slice(5)), l(o, r, i[r])));
                    ie._data(o, "parsedAttrs", !0)
                }
                return i
            }
            return "object" == typeof e ? this.each(function() {
                ie.data(this, e)
            }) : arguments.length > 1 ? this.each(function() {
                ie.data(this, e, t)
            }) : o ? l(o, e, ie.data(o, e)) : void 0
        },
        removeData: function(e) {
            return this.each(function() {
                ie.removeData(this, e)
            })
        }
    }), ie.extend({
        queue: function(e, t, n) {
            var r;
            return e ? (t = (t || "fx") + "queue", r = ie._data(e, t), n && (!r || ie.isArray(n) ? r = ie._data(e, t, ie.makeArray(n)) : r.push(n)), r || []) : void 0
        },
        dequeue: function(e, t) {
            t = t || "fx";
            var n = ie.queue(e, t),
                r = n.length,
                i = n.shift(),
                o = ie._queueHooks(e, t),
                a = function() {
                    ie.dequeue(e, t)
                };
            "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire()
        },
        _queueHooks: function(e, t) {
            var n = t + "queueHooks";
            return ie._data(e, n) || ie._data(e, n, {
                empty: ie.Callbacks("once memory").add(function() {
                    ie._removeData(e, t + "queue"), ie._removeData(e, n)
                })
            })
        }
    }), ie.fn.extend({
        queue: function(e, t) {
            var n = 2;
            return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? ie.queue(this[0], e) : void 0 === t ? this : this.each(function() {
                var n = ie.queue(this, e, t);
                ie._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && ie.dequeue(this, e)
            })
        },
        dequeue: function(e) {
            return this.each(function() {
                ie.dequeue(this, e)
            })
        },
        clearQueue: function(e) {
            return this.queue(e || "fx", [])
        },
        promise: function(e, t) {
            var n, r = 1,
                i = ie.Deferred(),
                o = this,
                a = this.length,
                s = function() {
                    --r || i.resolveWith(o, [o])
                };
            for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;) n = ie._data(o[a], e + "queueHooks"), n && n.empty && (r++, n.empty.add(s));
            return s(), i.promise(t)
        }
    });
    var ke = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
        Ee = ["Top", "Right", "Bottom", "Left"],
        Ne = function(e, t) {
            return e = t || e, "none" === ie.css(e, "display") || !ie.contains(e.ownerDocument, e)
        },
        De = ie.access = function(e, t, n, r, i, o, a) {
            var s = 0,
                l = e.length,
                c = null == n;
            if ("object" === ie.type(n)) {
                i = !0;
                for (s in n) ie.access(e, t, s, n[s], !0, o, a)
            } else if (void 0 !== r && (i = !0, ie.isFunction(r) || (a = !0), c && (a ? (t.call(e, r), t = null) : (c = t, t = function(e, t, n) {
                    return c.call(ie(e), n)
                })), t))
                for (; l > s; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
            return i ? e : c ? t.call(e) : l ? t(e[0], n) : o
        },
        Ae = /^(?:checkbox|radio)$/i;
    ! function() {
        var e = he.createElement("input"),
            t = he.createElement("div"),
            n = he.createDocumentFragment();
        if (t.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", ne.leadingWhitespace = 3 === t.firstChild.nodeType, ne.tbody = !t.getElementsByTagName("tbody").length, ne.htmlSerialize = !!t.getElementsByTagName("link").length, ne.html5Clone = "<:nav></:nav>" !== he.createElement("nav").cloneNode(!0).outerHTML, e.type = "checkbox", e.checked = !0, n.appendChild(e), ne.appendChecked = e.checked, t.innerHTML = "<textarea>x</textarea>", ne.noCloneChecked = !!t.cloneNode(!0).lastChild.defaultValue, n.appendChild(t), t.innerHTML = "<input type='radio' checked='checked' name='t'/>", ne.checkClone = t.cloneNode(!0).cloneNode(!0).lastChild.checked, ne.noCloneEvent = !0, t.attachEvent && (t.attachEvent("onclick", function() {
                ne.noCloneEvent = !1
            }), t.cloneNode(!0).click()), null == ne.deleteExpando) {
            ne.deleteExpando = !0;
            try {
                delete t.test
            } catch (r) {
                ne.deleteExpando = !1
            }
        }
    }(),
    function() {
        var t, n, r = he.createElement("div");
        for (t in {
                submit: !0,
                change: !0,
                focusin: !0
            }) n = "on" + t, (ne[t + "Bubbles"] = n in e) || (r.setAttribute(n, "t"), ne[t + "Bubbles"] = r.attributes[n].expando === !1);
        r = null
    }();
    var Le = /^(?:input|select|textarea)$/i,
        Me = /^key/,
        je = /^(?:mouse|pointer|contextmenu)|click/,
        Pe = /^(?:focusinfocus|focusoutblur)$/,
        He = /^([^.]*)(?:\.(.+)|)$/;
    ie.event = {
        global: {},
        add: function(e, t, n, r, i) {
            var o, a, s, l, c, u, d, p, f, h, m, g = ie._data(e);
            if (g) {
                for (n.handler && (l = n, n = l.handler, i = l.selector), n.guid || (n.guid = ie.guid++), (a = g.events) || (a = g.events = {}), (u = g.handle) || (u = g.handle = function(e) {
                        return typeof ie === we || e && ie.event.triggered === e.type ? void 0 : ie.event.dispatch.apply(u.elem, arguments)
                    }, u.elem = e), t = (t || "").match(be) || [""], s = t.length; s--;) o = He.exec(t[s]) || [], f = m = o[1], h = (o[2] || "").split(".").sort(), f && (c = ie.event.special[f] || {}, f = (i ? c.delegateType : c.bindType) || f, c = ie.event.special[f] || {}, d = ie.extend({
                    type: f,
                    origType: m,
                    data: r,
                    handler: n,
                    guid: n.guid,
                    selector: i,
                    needsContext: i && ie.expr.match.needsContext.test(i),
                    namespace: h.join(".")
                }, l), (p = a[f]) || (p = a[f] = [], p.delegateCount = 0, c.setup && c.setup.call(e, r, h, u) !== !1 || (e.addEventListener ? e.addEventListener(f, u, !1) : e.attachEvent && e.attachEvent("on" + f, u))), c.add && (c.add.call(e, d), d.handler.guid || (d.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, d) : p.push(d), ie.event.global[f] = !0);
                e = null
            }
        },
        remove: function(e, t, n, r, i) {
            var o, a, s, l, c, u, d, p, f, h, m, g = ie.hasData(e) && ie._data(e);
            if (g && (u = g.events)) {
                for (t = (t || "").match(be) || [""], c = t.length; c--;)
                    if (s = He.exec(t[c]) || [], f = m = s[1], h = (s[2] || "").split(".").sort(), f) {
                        for (d = ie.event.special[f] || {}, f = (r ? d.delegateType : d.bindType) || f, p = u[f] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), l = o = p.length; o--;) a = p[o], !i && m !== a.origType || n && n.guid !== a.guid || s && !s.test(a.namespace) || r && r !== a.selector && ("**" !== r || !a.selector) || (p.splice(o, 1), a.selector && p.delegateCount--, d.remove && d.remove.call(e, a));
                        l && !p.length && (d.teardown && d.teardown.call(e, h, g.handle) !== !1 || ie.removeEvent(e, f, g.handle), delete u[f])
                    } else
                        for (f in u) ie.event.remove(e, f + t[c], n, r, !0);
                ie.isEmptyObject(u) && (delete g.handle, ie._removeData(e, "events"))
            }
        },
        trigger: function(t, n, r, i) {
            var o, a, s, l, c, u, d, p = [r || he],
                f = te.call(t, "type") ? t.type : t,
                h = te.call(t, "namespace") ? t.namespace.split(".") : [];
            if (s = u = r = r || he, 3 !== r.nodeType && 8 !== r.nodeType && !Pe.test(f + ie.event.triggered) && (f.indexOf(".") >= 0 && (h = f.split("."), f = h.shift(), h.sort()), a = f.indexOf(":") < 0 && "on" + f, t = t[ie.expando] ? t : new ie.Event(f, "object" == typeof t && t), t.isTrigger = i ? 2 : 3, t.namespace = h.join("."), t.namespace_re = t.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = r), n = null == n ? [t] : ie.makeArray(n, [t]), c = ie.event.special[f] || {}, i || !c.trigger || c.trigger.apply(r, n) !== !1)) {
                if (!i && !c.noBubble && !ie.isWindow(r)) {
                    for (l = c.delegateType || f, Pe.test(l + f) || (s = s.parentNode); s; s = s.parentNode) p.push(s), u = s;
                    u === (r.ownerDocument || he) && p.push(u.defaultView || u.parentWindow || e)
                }
                for (d = 0;
                    (s = p[d++]) && !t.isPropagationStopped();) t.type = d > 1 ? l : c.bindType || f, o = (ie._data(s, "events") || {})[t.type] && ie._data(s, "handle"), o && o.apply(s, n), o = a && s[a], o && o.apply && ie.acceptData(s) && (t.result = o.apply(s, n), t.result === !1 && t.preventDefault());
                if (t.type = f, !i && !t.isDefaultPrevented() && (!c._default || c._default.apply(p.pop(), n) === !1) && ie.acceptData(r) && a && r[f] && !ie.isWindow(r)) {
                    u = r[a], u && (r[a] = null), ie.event.triggered = f;
                    try {
                        r[f]()
                    } catch (m) {}
                    ie.event.triggered = void 0, u && (r[a] = u)
                }
                return t.result
            }
        },
        dispatch: function(e) {
            e = ie.event.fix(e);
            var t, n, r, i, o, a = [],
                s = Z.call(arguments),
                l = (ie._data(this, "events") || {})[e.type] || [],
                c = ie.event.special[e.type] || {};
            if (s[0] = e, e.delegateTarget = this, !c.preDispatch || c.preDispatch.call(this, e) !== !1) {
                for (a = ie.event.handlers.call(this, e, l), t = 0;
                    (i = a[t++]) && !e.isPropagationStopped();)
                    for (e.currentTarget = i.elem, o = 0;
                        (r = i.handlers[o++]) && !e.isImmediatePropagationStopped();)(!e.namespace_re || e.namespace_re.test(r.namespace)) && (e.handleObj = r, e.data = r.data, n = ((ie.event.special[r.origType] || {}).handle || r.handler).apply(i.elem, s), void 0 !== n && (e.result = n) === !1 && (e.preventDefault(), e.stopPropagation()));
                return c.postDispatch && c.postDispatch.call(this, e), e.result
            }
        },
        handlers: function(e, t) {
            var n, r, i, o, a = [],
                s = t.delegateCount,
                l = e.target;
            if (s && l.nodeType && (!e.button || "click" !== e.type))
                for (; l != this; l = l.parentNode || this)
                    if (1 === l.nodeType && (l.disabled !== !0 || "click" !== e.type)) {
                        for (i = [], o = 0; s > o; o++) r = t[o], n = r.selector + " ", void 0 === i[n] && (i[n] = r.needsContext ? ie(n, this).index(l) >= 0 : ie.find(n, this, null, [l]).length), i[n] && i.push(r);
                        i.length && a.push({
                            elem: l,
                            handlers: i
                        })
                    }
            return s < t.length && a.push({
                elem: this,
                handlers: t.slice(s)
            }), a
        },
        fix: function(e) {
            if (e[ie.expando]) return e;
            var t, n, r, i = e.type,
                o = e,
                a = this.fixHooks[i];
            for (a || (this.fixHooks[i] = a = je.test(i) ? this.mouseHooks : Me.test(i) ? this.keyHooks : {}), r = a.props ? this.props.concat(a.props) : this.props, e = new ie.Event(o), t = r.length; t--;) n = r[t], e[n] = o[n];
            return e.target || (e.target = o.srcElement || he), 3 === e.target.nodeType && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, a.filter ? a.filter(e, o) : e
        },
        props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
        fixHooks: {},
        keyHooks: {
            props: "char charCode key keyCode".split(" "),
            filter: function(e, t) {
                return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode), e
            }
        },
        mouseHooks: {
            props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
            filter: function(e, t) {
                var n, r, i, o = t.button,
                    a = t.fromElement;
                return null == e.pageX && null != t.clientX && (r = e.target.ownerDocument || he, i = r.documentElement, n = r.body, e.pageX = t.clientX + (i && i.scrollLeft || n && n.scrollLeft || 0) - (i && i.clientLeft || n && n.clientLeft || 0), e.pageY = t.clientY + (i && i.scrollTop || n && n.scrollTop || 0) - (i && i.clientTop || n && n.clientTop || 0)), !e.relatedTarget && a && (e.relatedTarget = a === e.target ? t.toElement : a), e.which || void 0 === o || (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), e
            }
        },
        special: {
            load: {
                noBubble: !0
            },
            focus: {
                trigger: function() {
                    if (this !== h() && this.focus) try {
                        return this.focus(), !1
                    } catch (e) {}
                },
                delegateType: "focusin"
            },
            blur: {
                trigger: function() {
                    return this === h() && this.blur ? (this.blur(), !1) : void 0
                },
                delegateType: "focusout"
            },
            click: {
                trigger: function() {
                    return ie.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0
                },
                _default: function(e) {
                    return ie.nodeName(e.target, "a")
                }
            },
            beforeunload: {
                postDispatch: function(e) {
                    void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                }
            }
        },
        simulate: function(e, t, n, r) {
            var i = ie.extend(new ie.Event, n, {
                type: e,
                isSimulated: !0,
                originalEvent: {}
            });
            r ? ie.event.trigger(i, null, t) : ie.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault()
        }
    }, ie.removeEvent = he.removeEventListener ? function(e, t, n) {
        e.removeEventListener && e.removeEventListener(t, n, !1)
    } : function(e, t, n) {
        var r = "on" + t;
        e.detachEvent && (typeof e[r] === we && (e[r] = null), e.detachEvent(r, n))
    }, ie.Event = function(e, t) {
        return this instanceof ie.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && e.returnValue === !1 ? p : f) : this.type = e, t && ie.extend(this, t), this.timeStamp = e && e.timeStamp || ie.now(), void(this[ie.expando] = !0)) : new ie.Event(e, t)
    }, ie.Event.prototype = {
        isDefaultPrevented: f,
        isPropagationStopped: f,
        isImmediatePropagationStopped: f,
        preventDefault: function() {
            var e = this.originalEvent;
            this.isDefaultPrevented = p, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
        },
        stopPropagation: function() {
            var e = this.originalEvent;
            this.isPropagationStopped = p, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0)
        },
        stopImmediatePropagation: function() {
            var e = this.originalEvent;
            this.isImmediatePropagationStopped = p, e && e.stopImmediatePropagation && e.stopImmediatePropagation(), this.stopPropagation()
        }
    }, ie.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout",
        pointerenter: "pointerover",
        pointerleave: "pointerout"
    }, function(e, t) {
        ie.event.special[e] = {
            delegateType: t,
            bindType: t,
            handle: function(e) {
                var n, r = this,
                    i = e.relatedTarget,
                    o = e.handleObj;
                return (!i || i !== r && !ie.contains(r, i)) && (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
            }
        }
    }), ne.submitBubbles || (ie.event.special.submit = {
        setup: function() {
            return ie.nodeName(this, "form") ? !1 : void ie.event.add(this, "click._submit keypress._submit", function(e) {
                var t = e.target,
                    n = ie.nodeName(t, "input") || ie.nodeName(t, "button") ? t.form : void 0;
                n && !ie._data(n, "submitBubbles") && (ie.event.add(n, "submit._submit", function(e) {
                    e._submit_bubble = !0
                }), ie._data(n, "submitBubbles", !0))
            })
        },
        postDispatch: function(e) {
            e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && ie.event.simulate("submit", this.parentNode, e, !0))
        },
        teardown: function() {
            return ie.nodeName(this, "form") ? !1 : void ie.event.remove(this, "._submit")
        }
    }), ne.changeBubbles || (ie.event.special.change = {
        setup: function() {
            return Le.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (ie.event.add(this, "propertychange._change", function(e) {
                "checked" === e.originalEvent.propertyName && (this._just_changed = !0)
            }), ie.event.add(this, "click._change", function(e) {
                this._just_changed && !e.isTrigger && (this._just_changed = !1), ie.event.simulate("change", this, e, !0)
            })), !1) : void ie.event.add(this, "beforeactivate._change", function(e) {
                var t = e.target;
                Le.test(t.nodeName) && !ie._data(t, "changeBubbles") && (ie.event.add(t, "change._change", function(e) {
                    !this.parentNode || e.isSimulated || e.isTrigger || ie.event.simulate("change", this.parentNode, e, !0)
                }), ie._data(t, "changeBubbles", !0))
            })
        },
        handle: function(e) {
            var t = e.target;
            return this !== t || e.isSimulated || e.isTrigger || "radio" !== t.type && "checkbox" !== t.type ? e.handleObj.handler.apply(this, arguments) : void 0
        },
        teardown: function() {
            return ie.event.remove(this, "._change"), !Le.test(this.nodeName)
        }
    }), ne.focusinBubbles || ie.each({
        focus: "focusin",
        blur: "focusout"
    }, function(e, t) {
        var n = function(e) {
            ie.event.simulate(t, e.target, ie.event.fix(e), !0)
        };
        ie.event.special[t] = {
            setup: function() {
                var r = this.ownerDocument || this,
                    i = ie._data(r, t);
                i || r.addEventListener(e, n, !0), ie._data(r, t, (i || 0) + 1)
            },
            teardown: function() {
                var r = this.ownerDocument || this,
                    i = ie._data(r, t) - 1;
                i ? ie._data(r, t, i) : (r.removeEventListener(e, n, !0), ie._removeData(r, t))
            }
        }
    }), ie.fn.extend({
        on: function(e, t, n, r, i) {
            var o, a;
            if ("object" == typeof e) {
                "string" != typeof t && (n = n || t, t = void 0);
                for (o in e) this.on(o, t, n, e[o], i);
                return this
            }
            if (null == n && null == r ? (r = t, n = t = void 0) : null == r && ("string" == typeof t ? (r = n, n = void 0) : (r = n, n = t, t = void 0)), r === !1) r = f;
            else if (!r) return this;
            return 1 === i && (a = r, r = function(e) {
                return ie().off(e), a.apply(this, arguments)
            }, r.guid = a.guid || (a.guid = ie.guid++)), this.each(function() {
                ie.event.add(this, e, r, n, t)
            })
        },
        one: function(e, t, n, r) {
            return this.on(e, t, n, r, 1)
        },
        off: function(e, t, n) {
            var r, i;
            if (e && e.preventDefault && e.handleObj) return r = e.handleObj, ie(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
            if ("object" == typeof e) {
                for (i in e) this.off(i, t, e[i]);
                return this
            }
            return (t === !1 || "function" == typeof t) && (n = t, t = void 0), n === !1 && (n = f), this.each(function() {
                ie.event.remove(this, e, n, t)
            })
        },
        trigger: function(e, t) {
            return this.each(function() {
                ie.event.trigger(e, t, this)
            })
        },
        triggerHandler: function(e, t) {
            var n = this[0];
            return n ? ie.event.trigger(e, t, n, !0) : void 0
        }
    });
    var ze = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
        Xe = / jQuery\d+="(?:null|\d+)"/g,
        Ye = new RegExp("<(?:" + ze + ")[\\s/>]", "i"),
        qe = /^\s+/,
        We = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
        Oe = /<([\w:]+)/,
        $e = /<tbody/i,
        Fe = /<|&#?\w+;/,
        Re = /<(?:script|style|link)/i,
        Be = /checked\s*(?:[^=]|=\s*.checked.)/i,
        Ie = /^$|\/(?:java|ecma)script/i,
        Ge = /^true\/(.*)/,
        Ve = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
        Ze = {
            option: [1, "<select multiple='multiple'>", "</select>"],
            legend: [1, "<fieldset>", "</fieldset>"],
            area: [1, "<map>", "</map>"],
            param: [1, "<object>", "</object>"],
            thead: [1, "<table>", "</table>"],
            tr: [2, "<table><tbody>", "</tbody></table>"],
            col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
            td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
            _default: ne.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
        },
        Ue = m(he),
        Je = Ue.appendChild(he.createElement("div"));
    Ze.optgroup = Ze.option, Ze.tbody = Ze.tfoot = Ze.colgroup = Ze.caption = Ze.thead, Ze.th = Ze.td, ie.extend({
        clone: function(e, t, n) {
            var r, i, o, a, s, l = ie.contains(e.ownerDocument, e);
            if (ne.html5Clone || ie.isXMLDoc(e) || !Ye.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (Je.innerHTML = e.outerHTML, Je.removeChild(o = Je.firstChild)), !(ne.noCloneEvent && ne.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || ie.isXMLDoc(e)))
                for (r = g(o), s = g(e), a = 0; null != (i = s[a]); ++a) r[a] && w(i, r[a]);
            if (t)
                if (n)
                    for (s = s || g(e), r = r || g(o), a = 0; null != (i = s[a]); a++) S(i, r[a]);
                else S(e, o);
            return r = g(o, "script"), r.length > 0 && x(r, !l && g(e, "script")), r = s = i = null, o
        },
        buildFragment: function(e, t, n, r) {
            for (var i, o, a, s, l, c, u, d = e.length, p = m(t), f = [], h = 0; d > h; h++)
                if (o = e[h], o || 0 === o)
                    if ("object" === ie.type(o)) ie.merge(f, o.nodeType ? [o] : o);
                    else if (Fe.test(o)) {
                for (s = s || p.appendChild(t.createElement("div")), l = (Oe.exec(o) || ["", ""])[1].toLowerCase(), u = Ze[l] || Ze._default, s.innerHTML = u[1] + o.replace(We, "<$1></$2>") + u[2], i = u[0]; i--;) s = s.lastChild;
                if (!ne.leadingWhitespace && qe.test(o) && f.push(t.createTextNode(qe.exec(o)[0])), !ne.tbody)
                    for (o = "table" !== l || $e.test(o) ? "<table>" !== u[1] || $e.test(o) ? 0 : s : s.firstChild, i = o && o.childNodes.length; i--;) ie.nodeName(c = o.childNodes[i], "tbody") && !c.childNodes.length && o.removeChild(c);
                for (ie.merge(f, s.childNodes), s.textContent = ""; s.firstChild;) s.removeChild(s.firstChild);
                s = p.lastChild
            } else f.push(t.createTextNode(o));
            for (s && p.removeChild(s), ne.appendChecked || ie.grep(g(f, "input"), v), h = 0; o = f[h++];)
                if ((!r || -1 === ie.inArray(o, r)) && (a = ie.contains(o.ownerDocument, o), s = g(p.appendChild(o), "script"), a && x(s), n))
                    for (i = 0; o = s[i++];) Ie.test(o.type || "") && n.push(o);
            return s = null, p
        },
        cleanData: function(e, t) {
            for (var n, r, i, o, a = 0, s = ie.expando, l = ie.cache, c = ne.deleteExpando, u = ie.event.special; null != (n = e[a]); a++)
                if ((t || ie.acceptData(n)) && (i = n[s], o = i && l[i])) {
                    if (o.events)
                        for (r in o.events) u[r] ? ie.event.remove(n, r) : ie.removeEvent(n, r, o.handle);
                    l[i] && (delete l[i], c ? delete n[s] : typeof n.removeAttribute !== we ? n.removeAttribute(s) : n[s] = null, V.push(i))
                }
        }
    }), ie.fn.extend({
        text: function(e) {
            return De(this, function(e) {
                return void 0 === e ? ie.text(this) : this.empty().append((this[0] && this[0].ownerDocument || he).createTextNode(e))
            }, null, e, arguments.length)
        },
        append: function() {
            return this.domManip(arguments, function(e) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = y(this, e);
                    t.appendChild(e)
                }
            })
        },
        prepend: function() {
            return this.domManip(arguments, function(e) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = y(this, e);
                    t.insertBefore(e, t.firstChild)
                }
            })
        },
        before: function() {
            return this.domManip(arguments, function(e) {
                this.parentNode && this.parentNode.insertBefore(e, this)
            })
        },
        after: function() {
            return this.domManip(arguments, function(e) {
                this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
            })
        },
        remove: function(e, t) {
            for (var n, r = e ? ie.filter(e, this) : this, i = 0; null != (n = r[i]); i++) t || 1 !== n.nodeType || ie.cleanData(g(n)), n.parentNode && (t && ie.contains(n.ownerDocument, n) && x(g(n, "script")), n.parentNode.removeChild(n));
            return this
        },
        empty: function() {
            for (var e, t = 0; null != (e = this[t]); t++) {
                for (1 === e.nodeType && ie.cleanData(g(e, !1)); e.firstChild;) e.removeChild(e.firstChild);
                e.options && ie.nodeName(e, "select") && (e.options.length = 0)
            }
            return this
        },
        clone: function(e, t) {
            return e = null == e ? !1 : e, t = null == t ? e : t, this.map(function() {
                return ie.clone(this, e, t)
            })
        },
        html: function(e) {
            return De(this, function(e) {
                var t = this[0] || {},
                    n = 0,
                    r = this.length;
                if (void 0 === e) return 1 === t.nodeType ? t.innerHTML.replace(Xe, "") : void 0;
                if (!("string" != typeof e || Re.test(e) || !ne.htmlSerialize && Ye.test(e) || !ne.leadingWhitespace && qe.test(e) || Ze[(Oe.exec(e) || ["", ""])[1].toLowerCase()])) {
                    e = e.replace(We, "<$1></$2>");
                    try {
                        for (; r > n; n++) t = this[n] || {}, 1 === t.nodeType && (ie.cleanData(g(t, !1)), t.innerHTML = e);
                        t = 0
                    } catch (i) {}
                }
                t && this.empty().append(e)
            }, null, e, arguments.length)
        },
        replaceWith: function() {
            var e = arguments[0];
            return this.domManip(arguments, function(t) {
                e = this.parentNode, ie.cleanData(g(this)), e && e.replaceChild(t, this)
            }), e && (e.length || e.nodeType) ? this : this.remove()
        },
        detach: function(e) {
            return this.remove(e, !0)
        },
        domManip: function(e, t) {
            e = U.apply([], e);
            var n, r, i, o, a, s, l = 0,
                c = this.length,
                u = this,
                d = c - 1,
                p = e[0],
                f = ie.isFunction(p);
            if (f || c > 1 && "string" == typeof p && !ne.checkClone && Be.test(p)) return this.each(function(n) {
                var r = u.eq(n);
                f && (e[0] = p.call(this, n, r.html())), r.domManip(e, t)
            });
            if (c && (s = ie.buildFragment(e, this[0].ownerDocument, !1, this), n = s.firstChild, 1 === s.childNodes.length && (s = n), n)) {
                for (o = ie.map(g(s, "script"), b), i = o.length; c > l; l++) r = s, l !== d && (r = ie.clone(r, !0, !0), i && ie.merge(o, g(r, "script"))), t.call(this[l], r, l);
                if (i)
                    for (a = o[o.length - 1].ownerDocument, ie.map(o, _), l = 0; i > l; l++) r = o[l], Ie.test(r.type || "") && !ie._data(r, "globalEval") && ie.contains(a, r) && (r.src ? ie._evalUrl && ie._evalUrl(r.src) : ie.globalEval((r.text || r.textContent || r.innerHTML || "").replace(Ve, "")));
                s = n = null
            }
            return this
        }
    }), ie.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    }, function(e, t) {
        ie.fn[e] = function(e) {
            for (var n, r = 0, i = [], o = ie(e), a = o.length - 1; a >= r; r++) n = r === a ? this : this.clone(!0), ie(o[r])[t](n), J.apply(i, n.get());
            return this.pushStack(i)
        }
    });
    var Ke, Qe = {};
    ! function() {
        var e;
        ne.shrinkWrapBlocks = function() {
            if (null != e) return e;
            e = !1;
            var t, n, r;
            return n = he.getElementsByTagName("body")[0], n && n.style ? (t = he.createElement("div"), r = he.createElement("div"), r.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", n.appendChild(r).appendChild(t), typeof t.style.zoom !== we && (t.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1", t.appendChild(he.createElement("div")).style.width = "5px", e = 3 !== t.offsetWidth), n.removeChild(r), e) : void 0
        }
    }();
    var et, tt, nt = /^margin/,
        rt = new RegExp("^(" + ke + ")(?!px)[a-z%]+$", "i"),
        it = /^(top|right|bottom|left)$/;
    e.getComputedStyle ? (et = function(t) {
        return t.ownerDocument.defaultView.opener ? t.ownerDocument.defaultView.getComputedStyle(t, null) : e.getComputedStyle(t, null)
    }, tt = function(e, t, n) {
        var r, i, o, a, s = e.style;
        return n = n || et(e), a = n ? n.getPropertyValue(t) || n[t] : void 0, n && ("" !== a || ie.contains(e.ownerDocument, e) || (a = ie.style(e, t)), rt.test(a) && nt.test(t) && (r = s.width, i = s.minWidth,
            o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 === a ? a : a + ""
    }) : he.documentElement.currentStyle && (et = function(e) {
        return e.currentStyle
    }, tt = function(e, t, n) {
        var r, i, o, a, s = e.style;
        return n = n || et(e), a = n ? n[t] : void 0, null == a && s && s[t] && (a = s[t]), rt.test(a) && !it.test(t) && (r = s.left, i = e.runtimeStyle, o = i && i.left, o && (i.left = e.currentStyle.left), s.left = "fontSize" === t ? "1em" : a, a = s.pixelLeft + "px", s.left = r, o && (i.left = o)), void 0 === a ? a : a + "" || "auto"
    }), ! function() {
        function t() {
            var t, n, r, i;
            n = he.getElementsByTagName("body")[0], n && n.style && (t = he.createElement("div"), r = he.createElement("div"), r.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", n.appendChild(r).appendChild(t), t.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", o = a = !1, l = !0, e.getComputedStyle && (o = "1%" !== (e.getComputedStyle(t, null) || {}).top, a = "4px" === (e.getComputedStyle(t, null) || {
                width: "4px"
            }).width, i = t.appendChild(he.createElement("div")), i.style.cssText = t.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", i.style.marginRight = i.style.width = "0", t.style.width = "1px", l = !parseFloat((e.getComputedStyle(i, null) || {}).marginRight), t.removeChild(i)), t.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", i = t.getElementsByTagName("td"), i[0].style.cssText = "margin:0;border:0;padding:0;display:none", s = 0 === i[0].offsetHeight, s && (i[0].style.display = "", i[1].style.display = "none", s = 0 === i[0].offsetHeight), n.removeChild(r))
        }
        var n, r, i, o, a, s, l;
        n = he.createElement("div"), n.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", i = n.getElementsByTagName("a")[0], (r = i && i.style) && (r.cssText = "float:left;opacity:.5", ne.opacity = "0.5" === r.opacity, ne.cssFloat = !!r.cssFloat, n.style.backgroundClip = "content-box", n.cloneNode(!0).style.backgroundClip = "", ne.clearCloneStyle = "content-box" === n.style.backgroundClip, ne.boxSizing = "" === r.boxSizing || "" === r.MozBoxSizing || "" === r.WebkitBoxSizing, ie.extend(ne, {
            reliableHiddenOffsets: function() {
                return null == s && t(), s
            },
            boxSizingReliable: function() {
                return null == a && t(), a
            },
            pixelPosition: function() {
                return null == o && t(), o
            },
            reliableMarginRight: function() {
                return null == l && t(), l
            }
        }))
    }(), ie.swap = function(e, t, n, r) {
        var i, o, a = {};
        for (o in t) a[o] = e.style[o], e.style[o] = t[o];
        i = n.apply(e, r || []);
        for (o in t) e.style[o] = a[o];
        return i
    };
    var ot = /alpha\([^)]*\)/i,
        at = /opacity\s*=\s*([^)]*)/,
        st = /^(none|table(?!-c[ea]).+)/,
        lt = new RegExp("^(" + ke + ")(.*)$", "i"),
        ct = new RegExp("^([+-])=(" + ke + ")", "i"),
        ut = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
        },
        dt = {
            letterSpacing: "0",
            fontWeight: "400"
        },
        pt = ["Webkit", "O", "Moz", "ms"];
    ie.extend({
        cssHooks: {
            opacity: {
                get: function(e, t) {
                    if (t) {
                        var n = tt(e, "opacity");
                        return "" === n ? "1" : n
                    }
                }
            }
        },
        cssNumber: {
            columnCount: !0,
            fillOpacity: !0,
            flexGrow: !0,
            flexShrink: !0,
            fontWeight: !0,
            lineHeight: !0,
            opacity: !0,
            order: !0,
            orphans: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0
        },
        cssProps: {
            "float": ne.cssFloat ? "cssFloat" : "styleFloat"
        },
        style: function(e, t, n, r) {
            if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                var i, o, a, s = ie.camelCase(t),
                    l = e.style;
                if (t = ie.cssProps[s] || (ie.cssProps[s] = E(l, s)), a = ie.cssHooks[t] || ie.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
                if (o = typeof n, "string" === o && (i = ct.exec(n)) && (n = (i[1] + 1) * i[2] + parseFloat(ie.css(e, t)), o = "number"), null != n && n === n && ("number" !== o || ie.cssNumber[s] || (n += "px"), ne.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), !(a && "set" in a && void 0 === (n = a.set(e, n, r))))) try {
                    l[t] = n
                } catch (c) {}
            }
        },
        css: function(e, t, n, r) {
            var i, o, a, s = ie.camelCase(t);
            return t = ie.cssProps[s] || (ie.cssProps[s] = E(e.style, s)), a = ie.cssHooks[t] || ie.cssHooks[s], a && "get" in a && (o = a.get(e, !0, n)), void 0 === o && (o = tt(e, t, r)), "normal" === o && t in dt && (o = dt[t]), "" === n || n ? (i = parseFloat(o), n === !0 || ie.isNumeric(i) ? i || 0 : o) : o
        }
    }), ie.each(["height", "width"], function(e, t) {
        ie.cssHooks[t] = {
            get: function(e, n, r) {
                return n ? st.test(ie.css(e, "display")) && 0 === e.offsetWidth ? ie.swap(e, ut, function() {
                    return L(e, t, r)
                }) : L(e, t, r) : void 0
            },
            set: function(e, n, r) {
                var i = r && et(e);
                return D(e, n, r ? A(e, t, r, ne.boxSizing && "border-box" === ie.css(e, "boxSizing", !1, i), i) : 0)
            }
        }
    }), ne.opacity || (ie.cssHooks.opacity = {
        get: function(e, t) {
            return at.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
        },
        set: function(e, t) {
            var n = e.style,
                r = e.currentStyle,
                i = ie.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "",
                o = r && r.filter || n.filter || "";
            n.zoom = 1, (t >= 1 || "" === t) && "" === ie.trim(o.replace(ot, "")) && n.removeAttribute && (n.removeAttribute("filter"), "" === t || r && !r.filter) || (n.filter = ot.test(o) ? o.replace(ot, i) : o + " " + i)
        }
    }), ie.cssHooks.marginRight = k(ne.reliableMarginRight, function(e, t) {
        return t ? ie.swap(e, {
            display: "inline-block"
        }, tt, [e, "marginRight"]) : void 0
    }), ie.each({
        margin: "",
        padding: "",
        border: "Width"
    }, function(e, t) {
        ie.cssHooks[e + t] = {
            expand: function(n) {
                for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; 4 > r; r++) i[e + Ee[r] + t] = o[r] || o[r - 2] || o[0];
                return i
            }
        }, nt.test(e) || (ie.cssHooks[e + t].set = D)
    }), ie.fn.extend({
        css: function(e, t) {
            return De(this, function(e, t, n) {
                var r, i, o = {},
                    a = 0;
                if (ie.isArray(t)) {
                    for (r = et(e), i = t.length; i > a; a++) o[t[a]] = ie.css(e, t[a], !1, r);
                    return o
                }
                return void 0 !== n ? ie.style(e, t, n) : ie.css(e, t)
            }, e, t, arguments.length > 1)
        },
        show: function() {
            return N(this, !0)
        },
        hide: function() {
            return N(this)
        },
        toggle: function(e) {
            return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
                Ne(this) ? ie(this).show() : ie(this).hide()
            })
        }
    }), ie.Tween = M, M.prototype = {
        constructor: M,
        init: function(e, t, n, r, i, o) {
            this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (ie.cssNumber[n] ? "" : "px")
        },
        cur: function() {
            var e = M.propHooks[this.prop];
            return e && e.get ? e.get(this) : M.propHooks._default.get(this)
        },
        run: function(e) {
            var t, n = M.propHooks[this.prop];
            return this.pos = t = this.options.duration ? ie.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : M.propHooks._default.set(this), this
        }
    }, M.prototype.init.prototype = M.prototype, M.propHooks = {
        _default: {
            get: function(e) {
                var t;
                return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = ie.css(e.elem, e.prop, ""), t && "auto" !== t ? t : 0) : e.elem[e.prop]
            },
            set: function(e) {
                ie.fx.step[e.prop] ? ie.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[ie.cssProps[e.prop]] || ie.cssHooks[e.prop]) ? ie.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
            }
        }
    }, M.propHooks.scrollTop = M.propHooks.scrollLeft = {
        set: function(e) {
            e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
        }
    }, ie.easing = {
        linear: function(e) {
            return e
        },
        swing: function(e) {
            return .5 - Math.cos(e * Math.PI) / 2
        }
    }, ie.fx = M.prototype.init, ie.fx.step = {};
    var ft, ht, mt = /^(?:toggle|show|hide)$/,
        gt = new RegExp("^(?:([+-])=|)(" + ke + ")([a-z%]*)$", "i"),
        vt = /queueHooks$/,
        yt = [z],
        bt = {
            "*": [function(e, t) {
                var n = this.createTween(e, t),
                    r = n.cur(),
                    i = gt.exec(t),
                    o = i && i[3] || (ie.cssNumber[e] ? "" : "px"),
                    a = (ie.cssNumber[e] || "px" !== o && +r) && gt.exec(ie.css(n.elem, e)),
                    s = 1,
                    l = 20;
                if (a && a[3] !== o) {
                    o = o || a[3], i = i || [], a = +r || 1;
                    do s = s || ".5", a /= s, ie.style(n.elem, e, a + o); while (s !== (s = n.cur() / r) && 1 !== s && --l)
                }
                return i && (a = n.start = +a || +r || 0, n.unit = o, n.end = i[1] ? a + (i[1] + 1) * i[2] : +i[2]), n
            }]
        };
    ie.Animation = ie.extend(Y, {
            tweener: function(e, t) {
                ie.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
                for (var n, r = 0, i = e.length; i > r; r++) n = e[r], bt[n] = bt[n] || [], bt[n].unshift(t)
            },
            prefilter: function(e, t) {
                t ? yt.unshift(e) : yt.push(e)
            }
        }), ie.speed = function(e, t, n) {
            var r = e && "object" == typeof e ? ie.extend({}, e) : {
                complete: n || !n && t || ie.isFunction(e) && e,
                duration: e,
                easing: n && t || t && !ie.isFunction(t) && t
            };
            return r.duration = ie.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in ie.fx.speeds ? ie.fx.speeds[r.duration] : ie.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = "fx"), r.old = r.complete, r.complete = function() {
                ie.isFunction(r.old) && r.old.call(this), r.queue && ie.dequeue(this, r.queue)
            }, r
        }, ie.fn.extend({
            fadeTo: function(e, t, n, r) {
                return this.filter(Ne).css("opacity", 0).show().end().animate({
                    opacity: t
                }, e, n, r)
            },
            animate: function(e, t, n, r) {
                var i = ie.isEmptyObject(e),
                    o = ie.speed(t, n, r),
                    a = function() {
                        var t = Y(this, ie.extend({}, e), o);
                        (i || ie._data(this, "finish")) && t.stop(!0)
                    };
                return a.finish = a, i || o.queue === !1 ? this.each(a) : this.queue(o.queue, a)
            },
            stop: function(e, t, n) {
                var r = function(e) {
                    var t = e.stop;
                    delete e.stop, t(n)
                };
                return "string" != typeof e && (n = t, t = e, e = void 0), t && e !== !1 && this.queue(e || "fx", []), this.each(function() {
                    var t = !0,
                        i = null != e && e + "queueHooks",
                        o = ie.timers,
                        a = ie._data(this);
                    if (i) a[i] && a[i].stop && r(a[i]);
                    else
                        for (i in a) a[i] && a[i].stop && vt.test(i) && r(a[i]);
                    for (i = o.length; i--;) o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n), t = !1, o.splice(i, 1));
                    (t || !n) && ie.dequeue(this, e)
                })
            },
            finish: function(e) {
                return e !== !1 && (e = e || "fx"), this.each(function() {
                    var t, n = ie._data(this),
                        r = n[e + "queue"],
                        i = n[e + "queueHooks"],
                        o = ie.timers,
                        a = r ? r.length : 0;
                    for (n.finish = !0, ie.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
                    for (t = 0; a > t; t++) r[t] && r[t].finish && r[t].finish.call(this);
                    delete n.finish
                })
            }
        }), ie.each(["toggle", "show", "hide"], function(e, t) {
            var n = ie.fn[t];
            ie.fn[t] = function(e, r, i) {
                return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(P(t, !0), e, r, i)
            }
        }), ie.each({
            slideDown: P("show"),
            slideUp: P("hide"),
            slideToggle: P("toggle"),
            fadeIn: {
                opacity: "show"
            },
            fadeOut: {
                opacity: "hide"
            },
            fadeToggle: {
                opacity: "toggle"
            }
        }, function(e, t) {
            ie.fn[e] = function(e, n, r) {
                return this.animate(t, e, n, r)
            }
        }), ie.timers = [], ie.fx.tick = function() {
            var e, t = ie.timers,
                n = 0;
            for (ft = ie.now(); n < t.length; n++) e = t[n], e() || t[n] !== e || t.splice(n--, 1);
            t.length || ie.fx.stop(), ft = void 0
        }, ie.fx.timer = function(e) {
            ie.timers.push(e), e() ? ie.fx.start() : ie.timers.pop()
        }, ie.fx.interval = 13, ie.fx.start = function() {
            ht || (ht = setInterval(ie.fx.tick, ie.fx.interval))
        }, ie.fx.stop = function() {
            clearInterval(ht), ht = null
        }, ie.fx.speeds = {
            slow: 600,
            fast: 200,
            _default: 400
        }, ie.fn.delay = function(e, t) {
            return e = ie.fx ? ie.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) {
                var r = setTimeout(t, e);
                n.stop = function() {
                    clearTimeout(r)
                }
            })
        },
        function() {
            var e, t, n, r, i;
            t = he.createElement("div"), t.setAttribute("className", "t"), t.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", r = t.getElementsByTagName("a")[0], n = he.createElement("select"), i = n.appendChild(he.createElement("option")), e = t.getElementsByTagName("input")[0], r.style.cssText = "top:1px", ne.getSetAttribute = "t" !== t.className, ne.style = /top/.test(r.getAttribute("style")), ne.hrefNormalized = "/a" === r.getAttribute("href"), ne.checkOn = !!e.value, ne.optSelected = i.selected, ne.enctype = !!he.createElement("form").enctype, n.disabled = !0, ne.optDisabled = !i.disabled, e = he.createElement("input"), e.setAttribute("value", ""), ne.input = "" === e.getAttribute("value"), e.value = "t", e.setAttribute("type", "radio"), ne.radioValue = "t" === e.value
        }();
    var _t = /\r/g;
    ie.fn.extend({
        val: function(e) {
            var t, n, r, i = this[0];
            return arguments.length ? (r = ie.isFunction(e), this.each(function(n) {
                var i;
                1 === this.nodeType && (i = r ? e.call(this, n, ie(this).val()) : e, null == i ? i = "" : "number" == typeof i ? i += "" : ie.isArray(i) && (i = ie.map(i, function(e) {
                    return null == e ? "" : e + ""
                })), t = ie.valHooks[this.type] || ie.valHooks[this.nodeName.toLowerCase()], t && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
            })) : i ? (t = ie.valHooks[i.type] || ie.valHooks[i.nodeName.toLowerCase()], t && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : (n = i.value, "string" == typeof n ? n.replace(_t, "") : null == n ? "" : n)) : void 0
        }
    }), ie.extend({
        valHooks: {
            option: {
                get: function(e) {
                    var t = ie.find.attr(e, "value");
                    return null != t ? t : ie.trim(ie.text(e))
                }
            },
            select: {
                get: function(e) {
                    for (var t, n, r = e.options, i = e.selectedIndex, o = "select-one" === e.type || 0 > i, a = o ? null : [], s = o ? i + 1 : r.length, l = 0 > i ? s : o ? i : 0; s > l; l++)
                        if (n = r[l], !(!n.selected && l !== i || (ne.optDisabled ? n.disabled : null !== n.getAttribute("disabled")) || n.parentNode.disabled && ie.nodeName(n.parentNode, "optgroup"))) {
                            if (t = ie(n).val(), o) return t;
                            a.push(t)
                        }
                    return a
                },
                set: function(e, t) {
                    for (var n, r, i = e.options, o = ie.makeArray(t), a = i.length; a--;)
                        if (r = i[a], ie.inArray(ie.valHooks.option.get(r), o) >= 0) try {
                            r.selected = n = !0
                        } catch (s) {
                            r.scrollHeight
                        } else r.selected = !1;
                    return n || (e.selectedIndex = -1), i
                }
            }
        }
    }), ie.each(["radio", "checkbox"], function() {
        ie.valHooks[this] = {
            set: function(e, t) {
                return ie.isArray(t) ? e.checked = ie.inArray(ie(e).val(), t) >= 0 : void 0
            }
        }, ne.checkOn || (ie.valHooks[this].get = function(e) {
            return null === e.getAttribute("value") ? "on" : e.value
        })
    });
    var xt, St, wt = ie.expr.attrHandle,
        Tt = /^(?:checked|selected)$/i,
        Ct = ne.getSetAttribute,
        kt = ne.input;
    ie.fn.extend({
        attr: function(e, t) {
            return De(this, ie.attr, e, t, arguments.length > 1)
        },
        removeAttr: function(e) {
            return this.each(function() {
                ie.removeAttr(this, e)
            })
        }
    }), ie.extend({
        attr: function(e, t, n) {
            var r, i, o = e.nodeType;
            return e && 3 !== o && 8 !== o && 2 !== o ? typeof e.getAttribute === we ? ie.prop(e, t, n) : (1 === o && ie.isXMLDoc(e) || (t = t.toLowerCase(), r = ie.attrHooks[t] || (ie.expr.match.bool.test(t) ? St : xt)), void 0 === n ? r && "get" in r && null !== (i = r.get(e, t)) ? i : (i = ie.find.attr(e, t), null == i ? void 0 : i) : null !== n ? r && "set" in r && void 0 !== (i = r.set(e, n, t)) ? i : (e.setAttribute(t, n + ""), n) : void ie.removeAttr(e, t)) : void 0
        },
        removeAttr: function(e, t) {
            var n, r, i = 0,
                o = t && t.match(be);
            if (o && 1 === e.nodeType)
                for (; n = o[i++];) r = ie.propFix[n] || n, ie.expr.match.bool.test(n) ? kt && Ct || !Tt.test(n) ? e[r] = !1 : e[ie.camelCase("default-" + n)] = e[r] = !1 : ie.attr(e, n, ""), e.removeAttribute(Ct ? n : r)
        },
        attrHooks: {
            type: {
                set: function(e, t) {
                    if (!ne.radioValue && "radio" === t && ie.nodeName(e, "input")) {
                        var n = e.value;
                        return e.setAttribute("type", t), n && (e.value = n), t
                    }
                }
            }
        }
    }), St = {
        set: function(e, t, n) {
            return t === !1 ? ie.removeAttr(e, n) : kt && Ct || !Tt.test(n) ? e.setAttribute(!Ct && ie.propFix[n] || n, n) : e[ie.camelCase("default-" + n)] = e[n] = !0, n
        }
    }, ie.each(ie.expr.match.bool.source.match(/\w+/g), function(e, t) {
        var n = wt[t] || ie.find.attr;
        wt[t] = kt && Ct || !Tt.test(t) ? function(e, t, r) {
            var i, o;
            return r || (o = wt[t], wt[t] = i, i = null != n(e, t, r) ? t.toLowerCase() : null, wt[t] = o), i
        } : function(e, t, n) {
            return n ? void 0 : e[ie.camelCase("default-" + t)] ? t.toLowerCase() : null
        }
    }), kt && Ct || (ie.attrHooks.value = {
        set: function(e, t, n) {
            return ie.nodeName(e, "input") ? void(e.defaultValue = t) : xt && xt.set(e, t, n)
        }
    }), Ct || (xt = {
        set: function(e, t, n) {
            var r = e.getAttributeNode(n);
            return r || e.setAttributeNode(r = e.ownerDocument.createAttribute(n)), r.value = t += "", "value" === n || t === e.getAttribute(n) ? t : void 0
        }
    }, wt.id = wt.name = wt.coords = function(e, t, n) {
        var r;
        return n ? void 0 : (r = e.getAttributeNode(t)) && "" !== r.value ? r.value : null
    }, ie.valHooks.button = {
        get: function(e, t) {
            var n = e.getAttributeNode(t);
            return n && n.specified ? n.value : void 0
        },
        set: xt.set
    }, ie.attrHooks.contenteditable = {
        set: function(e, t, n) {
            xt.set(e, "" === t ? !1 : t, n)
        }
    }, ie.each(["width", "height"], function(e, t) {
        ie.attrHooks[t] = {
            set: function(e, n) {
                return "" === n ? (e.setAttribute(t, "auto"), n) : void 0
            }
        }
    })), ne.style || (ie.attrHooks.style = {
        get: function(e) {
            return e.style.cssText || void 0
        },
        set: function(e, t) {
            return e.style.cssText = t + ""
        }
    });
    var Et = /^(?:input|select|textarea|button|object)$/i,
        Nt = /^(?:a|area)$/i;
    ie.fn.extend({
        prop: function(e, t) {
            return De(this, ie.prop, e, t, arguments.length > 1)
        },
        removeProp: function(e) {
            return e = ie.propFix[e] || e, this.each(function() {
                try {
                    this[e] = void 0, delete this[e]
                } catch (t) {}
            })
        }
    }), ie.extend({
        propFix: {
            "for": "htmlFor",
            "class": "className"
        },
        prop: function(e, t, n) {
            var r, i, o, a = e.nodeType;
            return e && 3 !== a && 8 !== a && 2 !== a ? (o = 1 !== a || !ie.isXMLDoc(e), o && (t = ie.propFix[t] || t, i = ie.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t]) : void 0
        },
        propHooks: {
            tabIndex: {
                get: function(e) {
                    var t = ie.find.attr(e, "tabindex");
                    return t ? parseInt(t, 10) : Et.test(e.nodeName) || Nt.test(e.nodeName) && e.href ? 0 : -1
                }
            }
        }
    }), ne.hrefNormalized || ie.each(["href", "src"], function(e, t) {
        ie.propHooks[t] = {
            get: function(e) {
                return e.getAttribute(t, 4)
            }
        }
    }), ne.optSelected || (ie.propHooks.selected = {
        get: function(e) {
            var t = e.parentNode;
            return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
        }
    }), ie.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
        ie.propFix[this.toLowerCase()] = this
    }), ne.enctype || (ie.propFix.enctype = "encoding");
    var Dt = /[\t\r\n\f]/g;
    ie.fn.extend({
        addClass: function(e) {
            var t, n, r, i, o, a, s = 0,
                l = this.length,
                c = "string" == typeof e && e;
            if (ie.isFunction(e)) return this.each(function(t) {
                ie(this).addClass(e.call(this, t, this.className))
            });
            if (c)
                for (t = (e || "").match(be) || []; l > s; s++)
                    if (n = this[s], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(Dt, " ") : " ")) {
                        for (o = 0; i = t[o++];) r.indexOf(" " + i + " ") < 0 && (r += i + " ");
                        a = ie.trim(r), n.className !== a && (n.className = a)
                    }
            return this
        },
        removeClass: function(e) {
            var t, n, r, i, o, a, s = 0,
                l = this.length,
                c = 0 === arguments.length || "string" == typeof e && e;
            if (ie.isFunction(e)) return this.each(function(t) {
                ie(this).removeClass(e.call(this, t, this.className))
            });
            if (c)
                for (t = (e || "").match(be) || []; l > s; s++)
                    if (n = this[s], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(Dt, " ") : "")) {
                        for (o = 0; i = t[o++];)
                            for (; r.indexOf(" " + i + " ") >= 0;) r = r.replace(" " + i + " ", " ");
                        a = e ? ie.trim(r) : "", n.className !== a && (n.className = a)
                    }
            return this
        },
        toggleClass: function(e, t) {
            var n = typeof e;
            return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : this.each(ie.isFunction(e) ? function(n) {
                ie(this).toggleClass(e.call(this, n, this.className, t), t)
            } : function() {
                if ("string" === n)
                    for (var t, r = 0, i = ie(this), o = e.match(be) || []; t = o[r++];) i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
                else(n === we || "boolean" === n) && (this.className && ie._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : ie._data(this, "__className__") || "")
            })
        },
        hasClass: function(e) {
            for (var t = " " + e + " ", n = 0, r = this.length; r > n; n++)
                if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(Dt, " ").indexOf(t) >= 0) return !0;
            return !1
        }
    }), ie.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, t) {
        ie.fn[t] = function(e, n) {
            return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
        }
    }), ie.fn.extend({
        hover: function(e, t) {
            return this.mouseenter(e).mouseleave(t || e)
        },
        bind: function(e, t, n) {
            return this.on(e, null, t, n)
        },
        unbind: function(e, t) {
            return this.off(e, null, t)
        },
        delegate: function(e, t, n, r) {
            return this.on(t, e, n, r)
        },
        undelegate: function(e, t, n) {
            return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
        }
    });
    var At = ie.now(),
        Lt = /\?/,
        Mt = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
    ie.parseJSON = function(t) {
        if (e.JSON && e.JSON.parse) return e.JSON.parse(t + "");
        var n, r = null,
            i = ie.trim(t + "");
        return i && !ie.trim(i.replace(Mt, function(e, t, i, o) {
            return n && t && (r = 0), 0 === r ? e : (n = i || t, r += !o - !i, "")
        })) ? Function("return " + i)() : ie.error("Invalid JSON: " + t)
    }, ie.parseXML = function(t) {
        var n, r;
        if (!t || "string" != typeof t) return null;
        try {
            e.DOMParser ? (r = new DOMParser, n = r.parseFromString(t, "text/xml")) : (n = new ActiveXObject("Microsoft.XMLDOM"), n.async = "false", n.loadXML(t))
        } catch (i) {
            n = void 0
        }
        return n && n.documentElement && !n.getElementsByTagName("parsererror").length || ie.error("Invalid XML: " + t), n
    };
    var jt, Pt, Ht = /#.*$/,
        zt = /([?&])_=[^&]*/,
        Xt = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
        Yt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
        qt = /^(?:GET|HEAD)$/,
        Wt = /^\/\//,
        Ot = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
        $t = {},
        Ft = {},
        Rt = "*/".concat("*");
    try {
        Pt = location.href
    } catch (Bt) {
        Pt = he.createElement("a"), Pt.href = "", Pt = Pt.href
    }
    jt = Ot.exec(Pt.toLowerCase()) || [], ie.extend({
        active: 0,
        lastModified: {},
        etag: {},
        ajaxSettings: {
            url: Pt,
            type: "GET",
            isLocal: Yt.test(jt[1]),
            global: !0,
            processData: !0,
            async: !0,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            accepts: {
                "*": Rt,
                text: "text/plain",
                html: "text/html",
                xml: "application/xml, text/xml",
                json: "application/json, text/javascript"
            },
            contents: {
                xml: /xml/,
                html: /html/,
                json: /json/
            },
            responseFields: {
                xml: "responseXML",
                text: "responseText",
                json: "responseJSON"
            },
            converters: {
                "* text": String,
                "text html": !0,
                "text json": ie.parseJSON,
                "text xml": ie.parseXML
            },
            flatOptions: {
                url: !0,
                context: !0
            }
        },
        ajaxSetup: function(e, t) {
            return t ? O(O(e, ie.ajaxSettings), t) : O(ie.ajaxSettings, e)
        },
        ajaxPrefilter: q($t),
        ajaxTransport: q(Ft),
        ajax: function(e, t) {
            function n(e, t, n, r) {
                var i, u, v, y, _, S = t;
                2 !== b && (b = 2, s && clearTimeout(s), c = void 0, a = r || "", x.readyState = e > 0 ? 4 : 0, i = e >= 200 && 300 > e || 304 === e, n && (y = $(d, x, n)), y = F(d, y, x, i), i ? (d.ifModified && (_ = x.getResponseHeader("Last-Modified"), _ && (ie.lastModified[o] = _), _ = x.getResponseHeader("etag"), _ && (ie.etag[o] = _)), 204 === e || "HEAD" === d.type ? S = "nocontent" : 304 === e ? S = "notmodified" : (S = y.state, u = y.data, v = y.error, i = !v)) : (v = S, (e || !S) && (S = "error", 0 > e && (e = 0))), x.status = e, x.statusText = (t || S) + "", i ? h.resolveWith(p, [u, S, x]) : h.rejectWith(p, [x, S, v]), x.statusCode(g), g = void 0, l && f.trigger(i ? "ajaxSuccess" : "ajaxError", [x, d, i ? u : v]), m.fireWith(p, [x, S]), l && (f.trigger("ajaxComplete", [x, d]), --ie.active || ie.event.trigger("ajaxStop")))
            }
            "object" == typeof e && (t = e, e = void 0), t = t || {};
            var r, i, o, a, s, l, c, u, d = ie.ajaxSetup({}, t),
                p = d.context || d,
                f = d.context && (p.nodeType || p.jquery) ? ie(p) : ie.event,
                h = ie.Deferred(),
                m = ie.Callbacks("once memory"),
                g = d.statusCode || {},
                v = {},
                y = {},
                b = 0,
                _ = "canceled",
                x = {
                    readyState: 0,
                    getResponseHeader: function(e) {
                        var t;
                        if (2 === b) {
                            if (!u)
                                for (u = {}; t = Xt.exec(a);) u[t[1].toLowerCase()] = t[2];
                            t = u[e.toLowerCase()]
                        }
                        return null == t ? null : t
                    },
                    getAllResponseHeaders: function() {
                        return 2 === b ? a : null
                    },
                    setRequestHeader: function(e, t) {
                        var n = e.toLowerCase();
                        return b || (e = y[n] = y[n] || e, v[e] = t), this
                    },
                    overrideMimeType: function(e) {
                        return b || (d.mimeType = e), this
                    },
                    statusCode: function(e) {
                        var t;
                        if (e)
                            if (2 > b)
                                for (t in e) g[t] = [g[t], e[t]];
                            else x.always(e[x.status]);
                        return this
                    },
                    abort: function(e) {
                        var t = e || _;
                        return c && c.abort(t), n(0, t), this
                    }
                };
            if (h.promise(x).complete = m.add, x.success = x.done, x.error = x.fail, d.url = ((e || d.url || Pt) + "").replace(Ht, "").replace(Wt, jt[1] + "//"), d.type = t.method || t.type || d.method || d.type, d.dataTypes = ie.trim(d.dataType || "*").toLowerCase().match(be) || [""], null == d.crossDomain && (r = Ot.exec(d.url.toLowerCase()), d.crossDomain = !(!r || r[1] === jt[1] && r[2] === jt[2] && (r[3] || ("http:" === r[1] ? "80" : "443")) === (jt[3] || ("http:" === jt[1] ? "80" : "443")))), d.data && d.processData && "string" != typeof d.data && (d.data = ie.param(d.data, d.traditional)), W($t, d, t, x), 2 === b) return x;
            l = ie.event && d.global, l && 0 === ie.active++ && ie.event.trigger("ajaxStart"), d.type = d.type.toUpperCase(), d.hasContent = !qt.test(d.type), o = d.url, d.hasContent || (d.data && (o = d.url += (Lt.test(o) ? "&" : "?") + d.data, delete d.data), d.cache === !1 && (d.url = zt.test(o) ? o.replace(zt, "$1_=" + At++) : o + (Lt.test(o) ? "&" : "?") + "_=" + At++)), d.ifModified && (ie.lastModified[o] && x.setRequestHeader("If-Modified-Since", ie.lastModified[o]), ie.etag[o] && x.setRequestHeader("If-None-Match", ie.etag[o])), (d.data && d.hasContent && d.contentType !== !1 || t.contentType) && x.setRequestHeader("Content-Type", d.contentType), x.setRequestHeader("Accept", d.dataTypes[0] && d.accepts[d.dataTypes[0]] ? d.accepts[d.dataTypes[0]] + ("*" !== d.dataTypes[0] ? ", " + Rt + "; q=0.01" : "") : d.accepts["*"]);
            for (i in d.headers) x.setRequestHeader(i, d.headers[i]);
            if (d.beforeSend && (d.beforeSend.call(p, x, d) === !1 || 2 === b)) return x.abort();
            _ = "abort";
            for (i in {
                    success: 1,
                    error: 1,
                    complete: 1
                }) x[i](d[i]);
            if (c = W(Ft, d, t, x)) {
                x.readyState = 1, l && f.trigger("ajaxSend", [x, d]), d.async && d.timeout > 0 && (s = setTimeout(function() {
                    x.abort("timeout")
                }, d.timeout));
                try {
                    b = 1, c.send(v, n)
                } catch (S) {
                    if (!(2 > b)) throw S;
                    n(-1, S)
                }
            } else n(-1, "No Transport");
            return x
        },
        getJSON: function(e, t, n) {
            return ie.get(e, t, n, "json")
        },
        getScript: function(e, t) {
            return ie.get(e, void 0, t, "script")
        }
    }), ie.each(["get", "post"], function(e, t) {
        ie[t] = function(e, n, r, i) {
            return ie.isFunction(n) && (i = i || r, r = n, n = void 0), ie.ajax({
                url: e,
                type: t,
                dataType: i,
                data: n,
                success: r
            })
        }
    }), ie._evalUrl = function(e) {
        return ie.ajax({
            url: e,
            type: "GET",
            dataType: "script",
            async: !1,
            global: !1,
            "throws": !0
        })
    }, ie.fn.extend({
        wrapAll: function(e) {
            if (ie.isFunction(e)) return this.each(function(t) {
                ie(this).wrapAll(e.call(this, t))
            });
            if (this[0]) {
                var t = ie(e, this[0].ownerDocument).eq(0).clone(!0);
                this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
                    for (var e = this; e.firstChild && 1 === e.firstChild.nodeType;) e = e.firstChild;
                    return e
                }).append(this)
            }
            return this
        },
        wrapInner: function(e) {
            return this.each(ie.isFunction(e) ? function(t) {
                ie(this).wrapInner(e.call(this, t))
            } : function() {
                var t = ie(this),
                    n = t.contents();
                n.length ? n.wrapAll(e) : t.append(e)
            })
        },
        wrap: function(e) {
            var t = ie.isFunction(e);
            return this.each(function(n) {
                ie(this).wrapAll(t ? e.call(this, n) : e)
            })
        },
        unwrap: function() {
            return this.parent().each(function() {
                ie.nodeName(this, "body") || ie(this).replaceWith(this.childNodes)
            }).end()
        }
    }), ie.expr.filters.hidden = function(e) {
        return e.offsetWidth <= 0 && e.offsetHeight <= 0 || !ne.reliableHiddenOffsets() && "none" === (e.style && e.style.display || ie.css(e, "display"))
    }, ie.expr.filters.visible = function(e) {
        return !ie.expr.filters.hidden(e)
    };
    var It = /%20/g,
        Gt = /\[\]$/,
        Vt = /\r?\n/g,
        Zt = /^(?:submit|button|image|reset|file)$/i,
        Ut = /^(?:input|select|textarea|keygen)/i;
    ie.param = function(e, t) {
        var n, r = [],
            i = function(e, t) {
                t = ie.isFunction(t) ? t() : null == t ? "" : t, r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
            };
        if (void 0 === t && (t = ie.ajaxSettings && ie.ajaxSettings.traditional), ie.isArray(e) || e.jquery && !ie.isPlainObject(e)) ie.each(e, function() {
            i(this.name, this.value)
        });
        else
            for (n in e) R(n, e[n], t, i);
        return r.join("&").replace(It, "+")
    }, ie.fn.extend({
        serialize: function() {
            return ie.param(this.serializeArray())
        },
        serializeArray: function() {
            return this.map(function() {
                var e = ie.prop(this, "elements");
                return e ? ie.makeArray(e) : this
            }).filter(function() {
                var e = this.type;
                return this.name && !ie(this).is(":disabled") && Ut.test(this.nodeName) && !Zt.test(e) && (this.checked || !Ae.test(e))
            }).map(function(e, t) {
                var n = ie(this).val();
                return null == n ? null : ie.isArray(n) ? ie.map(n, function(e) {
                    return {
                        name: t.name,
                        value: e.replace(Vt, "\r\n")
                    }
                }) : {
                    name: t.name,
                    value: n.replace(Vt, "\r\n")
                }
            }).get()
        }
    }), ie.ajaxSettings.xhr = void 0 !== e.ActiveXObject ? function() {
        return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && B() || I()
    } : B;
    var Jt = 0,
        Kt = {},
        Qt = ie.ajaxSettings.xhr();
    e.attachEvent && e.attachEvent("onunload", function() {
        for (var e in Kt) Kt[e](void 0, !0)
    }), ne.cors = !!Qt && "withCredentials" in Qt, Qt = ne.ajax = !!Qt, Qt && ie.ajaxTransport(function(e) {
        if (!e.crossDomain || ne.cors) {
            var t;
            return {
                send: function(n, r) {
                    var i, o = e.xhr(),
                        a = ++Jt;
                    if (o.open(e.type, e.url, e.async, e.username, e.password), e.xhrFields)
                        for (i in e.xhrFields) o[i] = e.xhrFields[i];
                    e.mimeType && o.overrideMimeType && o.overrideMimeType(e.mimeType), e.crossDomain || n["X-Requested-With"] || (n["X-Requested-With"] = "XMLHttpRequest");
                    for (i in n) void 0 !== n[i] && o.setRequestHeader(i, n[i] + "");
                    o.send(e.hasContent && e.data || null), t = function(n, i) {
                        var s, l, c;
                        if (t && (i || 4 === o.readyState))
                            if (delete Kt[a], t = void 0, o.onreadystatechange = ie.noop, i) 4 !== o.readyState && o.abort();
                            else {
                                c = {}, s = o.status, "string" == typeof o.responseText && (c.text = o.responseText);
                                try {
                                    l = o.statusText
                                } catch (u) {
                                    l = ""
                                }
                                s || !e.isLocal || e.crossDomain ? 1223 === s && (s = 204) : s = c.text ? 200 : 404
                            }
                        c && r(s, l, c, o.getAllResponseHeaders())
                    }, e.async ? 4 === o.readyState ? setTimeout(t) : o.onreadystatechange = Kt[a] = t : t()
                },
                abort: function() {
                    t && t(void 0, !0)
                }
            }
        }
    }), ie.ajaxSetup({
        accepts: {
            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
        },
        contents: {
            script: /(?:java|ecma)script/
        },
        converters: {
            "text script": function(e) {
                return ie.globalEval(e), e
            }
        }
    }), ie.ajaxPrefilter("script", function(e) {
        void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
    }), ie.ajaxTransport("script", function(e) {
        if (e.crossDomain) {
            var t, n = he.head || ie("head")[0] || he.documentElement;
            return {
                send: function(r, i) {
                    t = he.createElement("script"), t.async = !0, e.scriptCharset && (t.charset = e.scriptCharset), t.src = e.url, t.onload = t.onreadystatechange = function(e, n) {
                        (n || !t.readyState || /loaded|complete/.test(t.readyState)) && (t.onload = t.onreadystatechange = null, t.parentNode && t.parentNode.removeChild(t), t = null, n || i(200, "success"))
                    }, n.insertBefore(t, n.firstChild)
                },
                abort: function() {
                    t && t.onload(void 0, !0)
                }
            }
        }
    });
    var en = [],
        tn = /(=)\?(?=&|$)|\?\?/;
    ie.ajaxSetup({
        jsonp: "callback",
        jsonpCallback: function() {
            var e = en.pop() || ie.expando + "_" + At++;
            return this[e] = !0, e
        }
    }), ie.ajaxPrefilter("json jsonp", function(t, n, r) {
        var i, o, a, s = t.jsonp !== !1 && (tn.test(t.url) ? "url" : "string" == typeof t.data && !(t.contentType || "").indexOf("application/x-www-form-urlencoded") && tn.test(t.data) && "data");
        return s || "jsonp" === t.dataTypes[0] ? (i = t.jsonpCallback = ie.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(tn, "$1" + i) : t.jsonp !== !1 && (t.url += (Lt.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function() {
            return a || ie.error(i + " was not called"), a[0]
        }, t.dataTypes[0] = "json", o = e[i], e[i] = function() {
            a = arguments
        }, r.always(function() {
            e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, en.push(i)), a && ie.isFunction(o) && o(a[0]), a = o = void 0
        }), "script") : void 0
    }), ie.parseHTML = function(e, t, n) {
        if (!e || "string" != typeof e) return null;
        "boolean" == typeof t && (n = t, t = !1), t = t || he;
        var r = de.exec(e),
            i = !n && [];
        return r ? [t.createElement(r[1])] : (r = ie.buildFragment([e], t, i), i && i.length && ie(i).remove(), ie.merge([], r.childNodes))
    };
    var nn = ie.fn.load;
    ie.fn.load = function(e, t, n) {
        if ("string" != typeof e && nn) return nn.apply(this, arguments);
        var r, i, o, a = this,
            s = e.indexOf(" ");
        return s >= 0 && (r = ie.trim(e.slice(s, e.length)), e = e.slice(0, s)), ie.isFunction(t) ? (n = t, t = void 0) : t && "object" == typeof t && (o = "POST"), a.length > 0 && ie.ajax({
            url: e,
            type: o,
            dataType: "html",
            data: t
        }).done(function(e) {
            i = arguments, a.html(r ? ie("<div>").append(ie.parseHTML(e)).find(r) : e)
        }).complete(n && function(e, t) {
            a.each(n, i || [e.responseText, t, e])
        }), this
    }, ie.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
        ie.fn[t] = function(e) {
            return this.on(t, e)
        }
    }), ie.expr.filters.animated = function(e) {
        return ie.grep(ie.timers, function(t) {
            return e === t.elem
        }).length
    };
    var rn = e.document.documentElement;
    ie.offset = {
        setOffset: function(e, t, n) {
            var r, i, o, a, s, l, c, u = ie.css(e, "position"),
                d = ie(e),
                p = {};
            "static" === u && (e.style.position = "relative"), s = d.offset(), o = ie.css(e, "top"), l = ie.css(e, "left"), c = ("absolute" === u || "fixed" === u) && ie.inArray("auto", [o, l]) > -1, c ? (r = d.position(), a = r.top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(l) || 0), ie.isFunction(t) && (t = t.call(e, n, s)), null != t.top && (p.top = t.top - s.top + a), null != t.left && (p.left = t.left - s.left + i), "using" in t ? t.using.call(e, p) : d.css(p)
        }
    }, ie.fn.extend({
        offset: function(e) {
            if (arguments.length) return void 0 === e ? this : this.each(function(t) {
                ie.offset.setOffset(this, e, t)
            });
            var t, n, r = {
                    top: 0,
                    left: 0
                },
                i = this[0],
                o = i && i.ownerDocument;
            return o ? (t = o.documentElement, ie.contains(t, i) ? (typeof i.getBoundingClientRect !== we && (r = i.getBoundingClientRect()), n = G(o), {
                top: r.top + (n.pageYOffset || t.scrollTop) - (t.clientTop || 0),
                left: r.left + (n.pageXOffset || t.scrollLeft) - (t.clientLeft || 0)
            }) : r) : void 0
        },
        position: function() {
            if (this[0]) {
                var e, t, n = {
                        top: 0,
                        left: 0
                    },
                    r = this[0];
                return "fixed" === ie.css(r, "position") ? t = r.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), ie.nodeName(e[0], "html") || (n = e.offset()), n.top += ie.css(e[0], "borderTopWidth", !0), n.left += ie.css(e[0], "borderLeftWidth", !0)), {
                    top: t.top - n.top - ie.css(r, "marginTop", !0),
                    left: t.left - n.left - ie.css(r, "marginLeft", !0)
                }
            }
        },
        offsetParent: function() {
            return this.map(function() {
                for (var e = this.offsetParent || rn; e && !ie.nodeName(e, "html") && "static" === ie.css(e, "position");) e = e.offsetParent;
                return e || rn
            })
        }
    }), ie.each({
        scrollLeft: "pageXOffset",
        scrollTop: "pageYOffset"
    }, function(e, t) {
        var n = /Y/.test(t);
        ie.fn[e] = function(r) {
            return De(this, function(e, r, i) {
                var o = G(e);
                return void 0 === i ? o ? t in o ? o[t] : o.document.documentElement[r] : e[r] : void(o ? o.scrollTo(n ? ie(o).scrollLeft() : i, n ? i : ie(o).scrollTop()) : e[r] = i)
            }, e, r, arguments.length, null)
        }
    }), ie.each(["top", "left"], function(e, t) {
        ie.cssHooks[t] = k(ne.pixelPosition, function(e, n) {
            return n ? (n = tt(e, t), rt.test(n) ? ie(e).position()[t] + "px" : n) : void 0
        })
    }), ie.each({
        Height: "height",
        Width: "width"
    }, function(e, t) {
        ie.each({
            padding: "inner" + e,
            content: t,
            "": "outer" + e
        }, function(n, r) {
            ie.fn[r] = function(r, i) {
                var o = arguments.length && (n || "boolean" != typeof r),
                    a = n || (r === !0 || i === !0 ? "margin" : "border");
                return De(this, function(t, n, r) {
                    var i;
                    return ie.isWindow(t) ? t.document.documentElement["client" + e] : 9 === t.nodeType ? (i = t.documentElement, Math.max(t.body["scroll" + e], i["scroll" + e], t.body["offset" + e], i["offset" + e], i["client" + e])) : void 0 === r ? ie.css(t, n, a) : ie.style(t, n, r, a)
                }, t, o ? r : void 0, o, null)
            }
        })
    }), ie.fn.size = function() {
        return this.length
    }, ie.fn.andSelf = ie.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function() {
        return ie
    });
    var on = e.jQuery,
        an = e.$;
    return ie.noConflict = function(t) {
        return e.$ === ie && (e.$ = an), t && e.jQuery === ie && (e.jQuery = on), ie
    }, typeof t === we && (e.jQuery = e.$ = ie), ie
}),
function(e, t) {
    function n(e) {
        return "" === o ? e : (e = e.charAt(0).toUpperCase() + e.substr(1), o + e)
    }
    var r = Math,
        i = t.createElement("div").style,
        o = function() {
            for (var e, t = "t,webkitT,MozT,msT,OT".split(","), n = 0, r = t.length; r > n; n++)
                if (e = t[n] + "ransform", e in i) return t[n].substr(0, t[n].length - 1);
            return !1
        }(),
        a = o ? "-" + o.toLowerCase() + "-" : "",
        s = n("transform"),
        l = n("transitionProperty"),
        c = n("transitionDuration"),
        u = n("transformOrigin"),
        d = n("transitionTimingFunction"),
        p = n("transitionDelay"),
        f = /android/gi.test(navigator.appVersion),
        h = /iphone|ipad/gi.test(navigator.appVersion),
        m = /hp-tablet/gi.test(navigator.appVersion),
        g = n("perspective") in i,
        v = "ontouchstart" in e && !m,
        y = o !== !1,
        b = n("transition") in i,
        _ = "onorientationchange" in e ? "orientationchange" : "resize",
        x = v ? "touchstart" : "mousedown",
        S = v ? "touchmove" : "mousemove",
        w = v ? "touchend" : "mouseup",
        T = v ? "touchcancel" : "mouseup",
        C = function() {
            if (o === !1) return !1;
            var e = {
                "": "transitionend",
                webkit: "webkitTransitionEnd",
                Moz: "transitionend",
                O: "otransitionend",
                ms: "MSTransitionEnd"
            };
            return e[o]
        }(),
        k = function() {
            return e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function(e) {
                return setTimeout(e, 1)
            }
        }(),
        E = function() {
            return e.cancelRequestAnimationFrame || e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame || e.mozCancelRequestAnimationFrame || e.oCancelRequestAnimationFrame || e.msCancelRequestAnimationFrame || clearTimeout
        }(),
        N = g ? " translateZ(0)" : "",
        D = function(n, r) {
            var i, o = this;
            o.wrapper = "object" == typeof n ? n : t.getElementById(n), o.wrapper.style.overflow = "hidden", o.scroller = o.wrapper.children[0], o.options = {
                hScroll: !0,
                vScroll: !0,
                x: 0,
                y: 0,
                bounce: !0,
                bounceLock: !1,
                momentum: !0,
                lockDirection: !0,
                useTransform: !0,
                useTransition: !1,
                topOffset: 0,
                checkDOMChanges: !1,
                handleClick: !0,
                hScrollbar: !0,
                vScrollbar: !0,
                fixedScrollbar: f,
                hideScrollbar: h,
                fadeScrollbar: h && g,
                scrollbarClass: "",
                zoom: !1,
                zoomMin: 1,
                zoomMax: 4,
                doubleTapZoom: 2,
                wheelAction: "scroll",
                snap: !1,
                snapThreshold: 1,
                onRefresh: null,
                onBeforeScrollStart: function(e) {
                    e.preventDefault()
                },
                onScrollStart: null,
                onBeforeScrollMove: null,
                onScrollMove: null,
                onBeforeScrollEnd: null,
                onScrollEnd: null,
                onTouchEnd: null,
                onDestroy: null,
                onZoomStart: null,
                onZoom: null,
                onZoomEnd: null
            };
            for (i in r) o.options[i] = r[i];
            o.x = o.options.x, o.y = o.options.y, o.options.useTransform = y && o.options.useTransform, o.options.hScrollbar = o.options.hScroll && o.options.hScrollbar, o.options.vScrollbar = o.options.vScroll && o.options.vScrollbar, o.options.zoom = o.options.useTransform && o.options.zoom, o.options.useTransition = b && o.options.useTransition, o.options.zoom && f && (N = ""), o.scroller.style[l] = o.options.useTransform ? a + "transform" : "top left", o.scroller.style[c] = "0", o.scroller.style[u] = "0 0", o.options.useTransition && (o.scroller.style[d] = "cubic-bezier(0.33,0.66,0.66,1)"), o.options.useTransform ? o.scroller.style[s] = "translate(" + o.x + "px," + o.y + "px)" + N : o.scroller.style.cssText += ";position:absolute;top:" + o.y + "px;left:" + o.x + "px", o.options.useTransition && (o.options.fixedScrollbar = !0), o.refresh(), o._bind(_, e), o._bind(x), v || "none" != o.options.wheelAction && (o._bind("DOMMouseScroll"), o._bind("mousewheel")), o.options.checkDOMChanges && (o.checkDOMTime = setInterval(function() {
                o._checkDOMChanges()
            }, 500))
        };
    D.prototype = {
        enabled: !0,
        x: 0,
        y: 0,
        steps: [],
        scale: 1,
        currPageX: 0,
        currPageY: 0,
        pagesX: [],
        pagesY: [],
        aniTime: null,
        wheelZoomCount: 0,
        handleEvent: function(e) {
            var t = this;
            switch (e.type) {
                case x:
                    if (!v && 0 !== e.button) return;
                    t._start(e);
                    break;
                case S:
                    t._move(e);
                    break;
                case w:
                case T:
                    t._end(e);
                    break;
                case _:
                    t._resize();
                    break;
                case "DOMMouseScroll":
                case "mousewheel":
                    t._wheel(e);
                    break;
                case C:
                    t._transitionEnd(e)
            }
        },
        _checkDOMChanges: function() {
            this.moved || this.zoomed || this.animating || this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale || this.refresh()
        },
        _scrollbar: function(e) {
            var n, i = this;
            return i[e + "Scrollbar"] ? (i[e + "ScrollbarWrapper"] || (n = t.createElement("div"), i.options.scrollbarClass ? n.className = i.options.scrollbarClass + e.toUpperCase() : n.style.cssText = "position:absolute;z-index:100;" + ("h" == e ? "height:7px;bottom:1px;left:2px;right:" + (i.vScrollbar ? "7" : "2") + "px" : "width:7px;bottom:" + (i.hScrollbar ? "7" : "2") + "px;top:2px;right:1px"), n.style.cssText += ";pointer-events:none;" + a + "transition-property:opacity;" + a + "transition-duration:" + (i.options.fadeScrollbar ? "350ms" : "0") + ";overflow:hidden;opacity:" + (i.options.hideScrollbar ? "0" : "1"), i.wrapper.appendChild(n), i[e + "ScrollbarWrapper"] = n, n = t.createElement("div"), i.options.scrollbarClass || (n.style.cssText = "position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);" + a + "background-clip:padding-box;" + a + "box-sizing:border-box;" + ("h" == e ? "height:100%" : "width:100%") + ";" + a + "border-radius:3px;border-radius:3px"), n.style.cssText += ";pointer-events:none;" + a + "transition-property:" + a + "transform;" + a + "transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);" + a + "transition-duration:0;" + a + "transform: translate(0,0)" + N, i.options.useTransition && (n.style.cssText += ";" + a + "transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)"), i[e + "ScrollbarWrapper"].appendChild(n), i[e + "ScrollbarIndicator"] = n), "h" == e ? (i.hScrollbarSize = i.hScrollbarWrapper.clientWidth, i.hScrollbarIndicatorSize = r.max(r.round(i.hScrollbarSize * i.hScrollbarSize / i.scrollerW), 8), i.hScrollbarIndicator.style.width = i.hScrollbarIndicatorSize + "px", i.hScrollbarMaxScroll = i.hScrollbarSize - i.hScrollbarIndicatorSize, i.hScrollbarProp = i.hScrollbarMaxScroll / i.maxScrollX) : (i.vScrollbarSize = i.vScrollbarWrapper.clientHeight, i.vScrollbarIndicatorSize = r.max(r.round(i.vScrollbarSize * i.vScrollbarSize / i.scrollerH), 8), i.vScrollbarIndicator.style.height = i.vScrollbarIndicatorSize + "px", i.vScrollbarMaxScroll = i.vScrollbarSize - i.vScrollbarIndicatorSize, i.vScrollbarProp = i.vScrollbarMaxScroll / i.maxScrollY), void i._scrollbarPos(e, !0)) : void(i[e + "ScrollbarWrapper"] && (y && (i[e + "ScrollbarIndicator"].style[s] = ""), i[e + "ScrollbarWrapper"].parentNode.removeChild(i[e + "ScrollbarWrapper"]), i[e + "ScrollbarWrapper"] = null, i[e + "ScrollbarIndicator"] = null))
        },
        _resize: function() {
            var e = this;
            setTimeout(function() {
                e.refresh()
            }, f ? 200 : 0)
        },
        _pos: function(e, t) {
            this.zoomed || (e = this.hScroll ? e : 0, t = this.vScroll ? t : 0, this.options.useTransform ? this.scroller.style[s] = "translate(" + e + "px," + t + "px) scale(" + this.scale + ")" + N : (e = r.round(e), t = r.round(t), this.scroller.style.left = e + "px", this.scroller.style.top = t + "px"), this.x = e, this.y = t, this._scrollbarPos("h"), this._scrollbarPos("v"))
        },
        _scrollbarPos: function(e, t) {
            var n, i = this,
                o = "h" == e ? i.x : i.y;
            i[e + "Scrollbar"] && (o = i[e + "ScrollbarProp"] * o, 0 > o ? (i.options.fixedScrollbar || (n = i[e + "ScrollbarIndicatorSize"] + r.round(3 * o), 8 > n && (n = 8), i[e + "ScrollbarIndicator"].style["h" == e ? "width" : "height"] = n + "px"), o = 0) : o > i[e + "ScrollbarMaxScroll"] && (i.options.fixedScrollbar ? o = i[e + "ScrollbarMaxScroll"] : (n = i[e + "ScrollbarIndicatorSize"] - r.round(3 * (o - i[e + "ScrollbarMaxScroll"])), 8 > n && (n = 8), i[e + "ScrollbarIndicator"].style["h" == e ? "width" : "height"] = n + "px", o = i[e + "ScrollbarMaxScroll"] + (i[e + "ScrollbarIndicatorSize"] - n))), i[e + "ScrollbarWrapper"].style[p] = "0", i[e + "ScrollbarWrapper"].style.opacity = t && i.options.hideScrollbar ? "0" : "1", i[e + "ScrollbarIndicator"].style[s] = "translate(" + ("h" == e ? o + "px,0)" : "0," + o + "px)") + N)
        },
        _start: function(t) {
            var n, i, o, a, l, c = this,
                u = v ? t.touches[0] : t;
            c.enabled && (c.options.onBeforeScrollStart && c.options.onBeforeScrollStart.call(c, t), (c.options.useTransition || c.options.zoom) && c._transitionTime(0), c.moved = !1, c.animating = !1, c.zoomed = !1, c.distX = 0, c.distY = 0, c.absDistX = 0, c.absDistY = 0, c.dirX = 0, c.dirY = 0, c.options.zoom && v && t.touches.length > 1 && (a = r.abs(t.touches[0].pageX - t.touches[1].pageX), l = r.abs(t.touches[0].pageY - t.touches[1].pageY), c.touchesDistStart = r.sqrt(a * a + l * l), c.originX = r.abs(t.touches[0].pageX + t.touches[1].pageX - 2 * c.wrapperOffsetLeft) / 2 - c.x, c.originY = r.abs(t.touches[0].pageY + t.touches[1].pageY - 2 * c.wrapperOffsetTop) / 2 - c.y, c.options.onZoomStart && c.options.onZoomStart.call(c, t)), c.options.momentum && (c.options.useTransform ? (n = getComputedStyle(c.scroller, null)[s].replace(/[^0-9\-.,]/g, "").split(","), i = +(n[12] || n[4]), o = +(n[13] || n[5])) : (i = +getComputedStyle(c.scroller, null).left.replace(/[^0-9-]/g, ""), o = +getComputedStyle(c.scroller, null).top.replace(/[^0-9-]/g, "")), (i != c.x || o != c.y) && (c.options.useTransition ? c._unbind(C) : E(c.aniTime), c.steps = [], c._pos(i, o), c.options.onScrollEnd && c.options.onScrollEnd.call(c))), c.absStartX = c.x, c.absStartY = c.y, c.startX = c.x, c.startY = c.y, c.pointX = u.pageX, c.pointY = u.pageY, c.startTime = t.timeStamp || Date.now(), c.options.onScrollStart && c.options.onScrollStart.call(c, t), c._bind(S, e), c._bind(w, e), c._bind(T, e))
        },
        _move: function(e) {
            var t, n, i, o = this,
                a = v ? e.touches[0] : e,
                l = a.pageX - o.pointX,
                c = a.pageY - o.pointY,
                u = o.x + l,
                d = o.y + c,
                p = e.timeStamp || Date.now();
            return o.options.onBeforeScrollMove && o.options.onBeforeScrollMove.call(o, e), o.options.zoom && v && e.touches.length > 1 ? (t = r.abs(e.touches[0].pageX - e.touches[1].pageX), n = r.abs(e.touches[0].pageY - e.touches[1].pageY), o.touchesDist = r.sqrt(t * t + n * n), o.zoomed = !0, i = 1 / o.touchesDistStart * o.touchesDist * this.scale, i < o.options.zoomMin ? i = .5 * o.options.zoomMin * Math.pow(2, i / o.options.zoomMin) : i > o.options.zoomMax && (i = 2 * o.options.zoomMax * Math.pow(.5, o.options.zoomMax / i)), o.lastScale = i / this.scale, u = this.originX - this.originX * o.lastScale + this.x, d = this.originY - this.originY * o.lastScale + this.y, this.scroller.style[s] = "translate(" + u + "px," + d + "px) scale(" + i + ")" + N, void(o.options.onZoom && o.options.onZoom.call(o, e))) : (o.pointX = a.pageX, o.pointY = a.pageY, (u > 0 || u < o.maxScrollX) && (u = o.options.bounce ? o.x + l / 2 : u >= 0 || o.maxScrollX >= 0 ? 0 : o.maxScrollX), (d > o.minScrollY || d < o.maxScrollY) && (d = o.options.bounce ? o.y + c / 2 : d >= o.minScrollY || o.maxScrollY >= 0 ? o.minScrollY : o.maxScrollY), o.distX += l, o.distY += c, o.absDistX = r.abs(o.distX), o.absDistY = r.abs(o.distY), void(o.absDistX < 6 && o.absDistY < 6 || (o.options.lockDirection && (o.absDistX > o.absDistY + 5 ? (d = o.y, c = 0) : o.absDistY > o.absDistX + 5 && (u = o.x, l = 0)), o.moved = !0, o._pos(u, d), o.dirX = l > 0 ? -1 : 0 > l ? 1 : 0, o.dirY = c > 0 ? -1 : 0 > c ? 1 : 0, p - o.startTime > 300 && (o.startTime = p, o.startX = o.x, o.startY = o.y), o.options.onScrollMove && o.options.onScrollMove.call(o, e))))
        },
        _end: function(n) {
            if (!v || 0 === n.touches.length) {
                var i, o, a, l, u, d, p, f = this,
                    h = v ? n.changedTouches[0] : n,
                    m = {
                        dist: 0,
                        time: 0
                    },
                    g = {
                        dist: 0,
                        time: 0
                    },
                    y = (n.timeStamp || Date.now()) - f.startTime,
                    b = f.x,
                    _ = f.y;
                if (f._unbind(S, e), f._unbind(w, e), f._unbind(T, e), f.options.onBeforeScrollEnd && f.options.onBeforeScrollEnd.call(f, n), f.zoomed) return p = f.scale * f.lastScale, p = Math.max(f.options.zoomMin, p), p = Math.min(f.options.zoomMax, p), f.lastScale = p / f.scale, f.scale = p, f.x = f.originX - f.originX * f.lastScale + f.x, f.y = f.originY - f.originY * f.lastScale + f.y, f.scroller.style[c] = "200ms", f.scroller.style[s] = "translate(" + f.x + "px," + f.y + "px) scale(" + f.scale + ")" + N, f.zoomed = !1, f.refresh(), void(f.options.onZoomEnd && f.options.onZoomEnd.call(f, n));
                if (!f.moved) return v && (f.doubleTapTimer && f.options.zoom ? (clearTimeout(f.doubleTapTimer), f.doubleTapTimer = null, f.options.onZoomStart && f.options.onZoomStart.call(f, n), f.zoom(f.pointX, f.pointY, 1 == f.scale ? f.options.doubleTapZoom : 1), f.options.onZoomEnd && setTimeout(function() {
                    f.options.onZoomEnd.call(f, n)
                }, 200)) : this.options.handleClick && (f.doubleTapTimer = setTimeout(function() {
                    for (f.doubleTapTimer = null, i = h.target; 1 != i.nodeType;) i = i.parentNode;
                    "SELECT" != i.tagName && "INPUT" != i.tagName && "TEXTAREA" != i.tagName && (o = t.createEvent("MouseEvents"), o.initMouseEvent("click", !0, !0, n.view, 1, h.screenX, h.screenY, h.clientX, h.clientY, n.ctrlKey, n.altKey, n.shiftKey, n.metaKey, 0, null), o._fake = !0, i.dispatchEvent(o))
                }, f.options.zoom ? 250 : 0))), f._resetPos(400), void(f.options.onTouchEnd && f.options.onTouchEnd.call(f, n));
                if (300 > y && f.options.momentum && (m = b ? f._momentum(b - f.startX, y, -f.x, f.scrollerW - f.wrapperW + f.x, f.options.bounce ? f.wrapperW : 0) : m, g = _ ? f._momentum(_ - f.startY, y, -f.y, f.maxScrollY < 0 ? f.scrollerH - f.wrapperH + f.y - f.minScrollY : 0, f.options.bounce ? f.wrapperH : 0) : g, b = f.x + m.dist, _ = f.y + g.dist, (f.x > 0 && b > 0 || f.x < f.maxScrollX && b < f.maxScrollX) && (m = {
                        dist: 0,
                        time: 0
                    }), (f.y > f.minScrollY && _ > f.minScrollY || f.y < f.maxScrollY && _ < f.maxScrollY) && (g = {
                        dist: 0,
                        time: 0
                    })), m.dist || g.dist) return u = r.max(r.max(m.time, g.time), 10), f.options.snap && (a = b - f.absStartX, l = _ - f.absStartY, r.abs(a) < f.options.snapThreshold && r.abs(l) < f.options.snapThreshold ? f.scrollTo(f.absStartX, f.absStartY, 200) : (d = f._snap(b, _), b = d.x, _ = d.y, u = r.max(d.time, u))), f.scrollTo(r.round(b), r.round(_), u), void(f.options.onTouchEnd && f.options.onTouchEnd.call(f, n));
                if (f.options.snap) return a = b - f.absStartX, l = _ - f.absStartY, r.abs(a) < f.options.snapThreshold && r.abs(l) < f.options.snapThreshold ? f.scrollTo(f.absStartX, f.absStartY, 200) : (d = f._snap(f.x, f.y), (d.x != f.x || d.y != f.y) && f.scrollTo(d.x, d.y, d.time)), void(f.options.onTouchEnd && f.options.onTouchEnd.call(f, n));
                f._resetPos(200), f.options.onTouchEnd && f.options.onTouchEnd.call(f, n)
            }
        },
        _resetPos: function(e) {
            var t = this,
                n = t.x >= 0 ? 0 : t.x < t.maxScrollX ? t.maxScrollX : t.x,
                r = t.y >= t.minScrollY || t.maxScrollY > 0 ? t.minScrollY : t.y < t.maxScrollY ? t.maxScrollY : t.y;
            return n == t.x && r == t.y ? (t.moved && (t.moved = !1, t.options.onScrollEnd && t.options.onScrollEnd.call(t)), t.hScrollbar && t.options.hideScrollbar && ("webkit" == o && (t.hScrollbarWrapper.style[p] = "300ms"), t.hScrollbarWrapper.style.opacity = "0"), void(t.vScrollbar && t.options.hideScrollbar && ("webkit" == o && (t.vScrollbarWrapper.style[p] = "300ms"), t.vScrollbarWrapper.style.opacity = "0"))) : void t.scrollTo(n, r, e || 0)
        },
        _wheel: function(e) {
            var t, n, r, i, o, a = this;
            if ("wheelDeltaX" in e) t = e.wheelDeltaX / 12, n = e.wheelDeltaY / 12;
            else if ("wheelDelta" in e) t = n = e.wheelDelta / 12;
            else {
                if (!("detail" in e)) return;
                t = n = 3 * -e.detail
            }
            return "zoom" == a.options.wheelAction ? (o = a.scale * Math.pow(2, 1 / 3 * (n ? n / Math.abs(n) : 0)), o < a.options.zoomMin && (o = a.options.zoomMin), o > a.options.zoomMax && (o = a.options.zoomMax), void(o != a.scale && (!a.wheelZoomCount && a.options.onZoomStart && a.options.onZoomStart.call(a, e), a.wheelZoomCount++, a.zoom(e.pageX, e.pageY, o, 400), setTimeout(function() {
                a.wheelZoomCount--, !a.wheelZoomCount && a.options.onZoomEnd && a.options.onZoomEnd.call(a, e)
            }, 400)))) : (r = a.x + t, i = a.y + n, r > 0 ? r = 0 : r < a.maxScrollX && (r = a.maxScrollX), i > a.minScrollY ? i = a.minScrollY : i < a.maxScrollY && (i = a.maxScrollY), void(a.maxScrollY < 0 && a.scrollTo(r, i, 0)))
        },
        _transitionEnd: function(e) {
            var t = this;
            e.target == t.scroller && (t._unbind(C), t._startAni())
        },
        _startAni: function() {
            var e, t, n, i = this,
                o = i.x,
                a = i.y,
                s = Date.now();
            if (!i.animating) {
                if (!i.steps.length) return void i._resetPos(400);
                if (e = i.steps.shift(), e.x == o && e.y == a && (e.time = 0), i.animating = !0, i.moved = !0, i.options.useTransition) return i._transitionTime(e.time), i._pos(e.x, e.y), i.animating = !1, void(e.time ? i._bind(C) : i._resetPos(0));
                n = function() {
                    var l, c, u = Date.now();
                    return u >= s + e.time ? (i._pos(e.x, e.y), i.animating = !1, i.options.onAnimationEnd && i.options.onAnimationEnd.call(i), void i._startAni()) : (u = (u - s) / e.time - 1, t = r.sqrt(1 - u * u), l = (e.x - o) * t + o, c = (e.y - a) * t + a, i._pos(l, c), void(i.animating && (i.aniTime = k(n))))
                }, n()
            }
        },
        _transitionTime: function(e) {
            e += "ms", this.scroller.style[c] = e, this.hScrollbar && (this.hScrollbarIndicator.style[c] = e), this.vScrollbar && (this.vScrollbarIndicator.style[c] = e)
        },
        _momentum: function(e, t, n, i, o) {
            var a = 6e-4,
                s = r.abs(e) / t,
                l = s * s / (2 * a),
                c = 0,
                u = 0;
            return e > 0 && l > n ? (u = o / (6 / (l / s * a)), n += u, s = s * n / l, l = n) : 0 > e && l > i && (u = o / (6 / (l / s * a)), i += u, s = s * i / l, l = i), l *= 0 > e ? -1 : 1, c = s / a, {
                dist: l,
                time: r.round(c)
            }
        },
        _offset: function(e) {
            for (var t = -e.offsetLeft, n = -e.offsetTop; e = e.offsetParent;) t -= e.offsetLeft, n -= e.offsetTop;
            return e != this.wrapper && (t *= this.scale, n *= this.scale), {
                left: t,
                top: n
            }
        },
        _snap: function(e, t) {
            var n, i, o, a, s, l, c = this;
            for (o = c.pagesX.length - 1, n = 0, i = c.pagesX.length; i > n; n++)
                if (e >= c.pagesX[n]) {
                    o = n;
                    break
                }
            for (o == c.currPageX && o > 0 && c.dirX < 0 && o--, e = c.pagesX[o], s = r.abs(e - c.pagesX[c.currPageX]), s = s ? r.abs(c.x - e) / s * 500 : 0, c.currPageX = o, o = c.pagesY.length - 1, n = 0; o > n; n++)
                if (t >= c.pagesY[n]) {
                    o = n;
                    break
                }
            return o == c.currPageY && o > 0 && c.dirY < 0 && o--, t = c.pagesY[o], l = r.abs(t - c.pagesY[c.currPageY]), l = l ? r.abs(c.y - t) / l * 500 : 0, c.currPageY = o, a = r.round(r.max(s, l)) || 200, {
                x: e,
                y: t,
                time: a
            }
        },
        _bind: function(e, t, n) {
            (t || this.scroller).addEventListener(e, this, !!n)
        },
        _unbind: function(e, t, n) {
            (t || this.scroller).removeEventListener(e, this, !!n)
        },
        destroy: function() {
            var t = this;
            t.scroller.style[s] = "", t.hScrollbar = !1, t.vScrollbar = !1, t._scrollbar("h"), t._scrollbar("v"), t._unbind(_, e), t._unbind(x), t._unbind(S, e), t._unbind(w, e), t._unbind(T, e), t.options.hasTouch || (t._unbind("DOMMouseScroll"), t._unbind("mousewheel")), t.options.useTransition && t._unbind(C), t.options.checkDOMChanges && clearInterval(t.checkDOMTime), t.options.onDestroy && t.options.onDestroy.call(t)
        },
        refresh: function() {
            var e, t, n, i, o = this,
                a = 0,
                s = 0;
            if (o.scale < o.options.zoomMin && (o.scale = o.options.zoomMin), o.wrapperW = o.wrapper.clientWidth || 1, o.wrapperH = o.wrapper.clientHeight || 1, o.minScrollY = -o.options.topOffset || 0, o.scrollerW = r.round(o.scroller.offsetWidth * o.scale), o.scrollerH = r.round((o.scroller.offsetHeight + o.minScrollY) * o.scale), o.maxScrollX = o.wrapperW - o.scrollerW, o.maxScrollY = o.wrapperH - o.scrollerH + o.minScrollY, o.dirX = 0, o.dirY = 0, o.options.onRefresh && o.options.onRefresh.call(o), o.hScroll = o.options.hScroll && o.maxScrollX < 0, o.vScroll = o.options.vScroll && (!o.options.bounceLock && !o.hScroll || o.scrollerH > o.wrapperH), o.hScrollbar = o.hScroll && o.options.hScrollbar, o.vScrollbar = o.vScroll && o.options.vScrollbar && o.scrollerH > o.wrapperH, e = o._offset(o.wrapper), o.wrapperOffsetLeft = -e.left, o.wrapperOffsetTop = -e.top, "string" == typeof o.options.snap)
                for (o.pagesX = [], o.pagesY = [], i = o.scroller.querySelectorAll(o.options.snap), t = 0, n = i.length; n > t; t++) a = o._offset(i[t]), a.left += o.wrapperOffsetLeft, a.top += o.wrapperOffsetTop, o.pagesX[t] = a.left < o.maxScrollX ? o.maxScrollX : a.left * o.scale, o.pagesY[t] = a.top < o.maxScrollY ? o.maxScrollY : a.top * o.scale;
            else if (o.options.snap) {
                for (o.pagesX = []; a >= o.maxScrollX;) o.pagesX[s] = a, a -= o.wrapperW, s++;
                for (o.maxScrollX % o.wrapperW && (o.pagesX[o.pagesX.length] = o.maxScrollX - o.pagesX[o.pagesX.length - 1] + o.pagesX[o.pagesX.length - 1]), a = 0, s = 0, o.pagesY = []; a >= o.maxScrollY;) o.pagesY[s] = a, a -= o.wrapperH, s++;
                o.maxScrollY % o.wrapperH && (o.pagesY[o.pagesY.length] = o.maxScrollY - o.pagesY[o.pagesY.length - 1] + o.pagesY[o.pagesY.length - 1])
            }
            o._scrollbar("h"), o._scrollbar("v"), o.zoomed || (o.scroller.style[c] = "0", o._resetPos(400))
        },
        scrollTo: function(e, t, n, r) {
            var i, o, a = this,
                s = e;
            for (a.stop(), s.length || (s = [{
                    x: e,
                    y: t,
                    time: n,
                    relative: r
                }]), i = 0, o = s.length; o > i; i++) s[i].relative && (s[i].x = a.x - s[i].x, s[i].y = a.y - s[i].y), a.steps.push({
                x: s[i].x,
                y: s[i].y,
                time: s[i].time || 0
            });
            a._startAni()
        },
        scrollToElement: function(e, t) {
            var n, i = this;
            e = e.nodeType ? e : i.scroller.querySelector(e), e && (n = i._offset(e), n.left += i.wrapperOffsetLeft, n.top += i.wrapperOffsetTop, n.left = n.left > 0 ? 0 : n.left < i.maxScrollX ? i.maxScrollX : n.left, n.top = n.top > i.minScrollY ? i.minScrollY : n.top < i.maxScrollY ? i.maxScrollY : n.top, t = void 0 === t ? r.max(2 * r.abs(n.left), 2 * r.abs(n.top)) : t, i.scrollTo(n.left, n.top, t))
        },
        scrollToPage: function(e, t, n) {
            var r, i, o = this;
            n = void 0 === n ? 400 : n, o.options.onScrollStart && o.options.onScrollStart.call(o), o.options.snap ? (e = "next" == e ? o.currPageX + 1 : "prev" == e ? o.currPageX - 1 : e, t = "next" == t ? o.currPageY + 1 : "prev" == t ? o.currPageY - 1 : t, e = 0 > e ? 0 : e > o.pagesX.length - 1 ? o.pagesX.length - 1 : e, t = 0 > t ? 0 : t > o.pagesY.length - 1 ? o.pagesY.length - 1 : t, o.currPageX = e, o.currPageY = t, r = o.pagesX[e], i = o.pagesY[t]) : (r = -o.wrapperW * e, i = -o.wrapperH * t, r < o.maxScrollX && (r = o.maxScrollX), i < o.maxScrollY && (i = o.maxScrollY)), o.scrollTo(r, i, n)
        },
        disable: function() {
            this.stop(), this._resetPos(0), this.enabled = !1, this._unbind(S, e), this._unbind(w, e), this._unbind(T, e)
        },
        enable: function() {
            this.enabled = !0
        },
        stop: function() {
            this.options.useTransition ? this._unbind(C) : E(this.aniTime), this.steps = [], this.moved = !1, this.animating = !1
        },
        zoom: function(e, t, n, r) {
            var i = this,
                o = n / i.scale;
            i.options.useTransform && (i.zoomed = !0, r = void 0 === r ? 200 : r, e = e - i.wrapperOffsetLeft - i.x, t = t - i.wrapperOffsetTop - i.y, i.x = e - e * o + i.x, i.y = t - t * o + i.y, i.scale = n, i.refresh(), i.x = i.x > 0 ? 0 : i.x < i.maxScrollX ? i.maxScrollX : i.x, i.y = i.y > i.minScrollY ? i.minScrollY : i.y < i.maxScrollY ? i.maxScrollY : i.y, i.scroller.style[c] = r + "ms", i.scroller.style[s] = "translate(" + i.x + "px," + i.y + "px) scale(" + n + ")" + N, i.zoomed = !1)
        },
        isReady: function() {
            return !this.moved && !this.zoomed && !this.animating
        }
    }, i = null, "undefined" != typeof exports ? exports.iScroll = D : e.iScroll = D
}(window, document),
function(e) {
    var t, n, r, i, o, a, s, l, c, u = {
            setNakedBarDelta: function(e, t) {
                if ("stickToSides" === e) c = {
                    toEndWidth: t,
                    toBeginLeft: 0,
                    toBeginWidth: t
                };
                else {
                    if ("middle" !== e) throw new Error("unknown position of setNakedBarDelta: " + e);
                    c = {
                        toEndWidth: t / 2,
                        toBeginLeft: t / 2,
                        toBeginWidth: t / 2
                    }
                }
            },
            getSliderValuesAtPositionPx: function(e, t) {
                var n, r, i = this,
                    o = i.data("pixel_to_value_mapping");
                if ("undefined" != typeof o) n = o(e), r = o(t);
                else {
                    var a = u.getSliderWidthPx.call(i) - i.data("left_grip_width");
                    n = u.inverse_rangemap_0_to_n.call(i, e, a), r = u.inverse_rangemap_0_to_n.call(i, t, a)
                }
                return [n, r]
            },
            validateAndMoveGripsToPx: function(e, t) {
                var n = this,
                    r = u.getSliderWidthPx.call(n) - n.data("left_grip_width");
                if (r >= t && e >= 0 && r >= e && (!n.data("has_right_grip") || t >= e)) {
                    var i = n.data("cur_min"),
                        o = n.data("cur_max");
                    u.set_position_from_px.call(n, e, t), u.refresh_grips_style.call(n), u.notify_changed_implicit.call(n, "drag_move", i, o)
                }
                return n
            },
            updateAriaAttributes: function() {
                var e = this,
                    t = e.data("settings"),
                    n = e.find(t.left_grip_selector);
                if (e.data("has_right_grip")) {
                    var r = e.find(t.right_grip_selector);
                    n.attr("aria-valuemin", e.data("range_min")).attr("aria-valuenow", d.get_current_min_value.call(e)).attr("aria-valuemax", d.get_current_max_value.call(e)), r.attr("aria-valuemin", d.get_current_min_value.call(e)).attr("aria-valuenow", d.get_current_max_value.call(e)).attr("aria-valuemax", e.data("range_max"))
                } else n.attr("aria-valuemin", e.data("range_min")).attr("aria-valuenow", d.get_current_min_value.call(e)).attr("aria-valuemax", e.data("range_max"));
                return e
            },
            getSliderWidthPx: function() {
                var e = this;
                return Math.round(e.width())
            },
            getGripPositionPx: function(e) {
                return parseInt(e.css("left").replace("px", ""), 10)
            },
            getLeftGripPositionPx: function() {
                var e = this,
                    t = e.data("settings"),
                    n = e.find(t.left_grip_selector);
                return u.getGripPositionPx.call(e, n)
            },
            getRightGripPositionPx: function() {
                var e = this,
                    t = e.data("settings");
                if (e.data("has_right_grip")) return u.getGripPositionPx.call(e, e.find(t.right_grip_selector));
                var n = u.getSliderWidthPx.call(e) - e.data("left_grip_width");
                return u.rangemap_0_to_n.call(e, e.data("cur_max"), n)
            },
            getLeftGripWidth: function() {
                var e = this,
                    t = e.data("settings"),
                    n = e.find(t.left_grip_selector);
                return Math.round(n.outerWidth())
            },
            getRightGripWidth: function() {
                var e = this,
                    t = e.data("settings"),
                    n = e.find(t.right_grip_selector);
                return Math.round(n.outerWidth())
            },
            binarySearchValueToPxCompareFunc: function(t, n, r) {
                return t === n[r] ? 0 : t < n[r] && 0 === r ? 0 : n[r - 1] <= t && t < n[r] ? 0 : t > n[r] ? 1 : t <= n[r - 1] ? -1 : void e.error("cannot compare s: " + t + " with a[" + r + "]. a is: " + n.join(","))
            },
            binarySearch: function(e, t, n, r) {
                for (var i, o, a = 0, s = e.length - 1; s >= a;) {
                    i = (a + s) / 2 | 0, o = n(e, i);
                    var l = r(t, e, i);
                    if (l > 0) a = i + 1;
                    else {
                        if (!(0 > l)) return i;
                        s = i - 1
                    }
                }
                return -1
            },
            haveLimits: function() {
                var e = this,
                    t = e.data("lower-limit"),
                    n = e.data("upper-limit"),
                    r = !1;
                return "undefined" != typeof t && "undefined" != typeof n && (r = !0), r
            },
            refresh_grips_style: function() {
                var e = this,
                    t = e.data("settings");
                if ("undefined" != typeof t.highlight) {
                    var n = e.data("highlightedRangeMin");
                    if ("undefined" != typeof n) {
                        var r = e.find(t.left_grip_selector),
                            i = e.find(t.right_grip_selector),
                            o = e.data("highlightedRangeMax"),
                            a = e.data("cur_min"),
                            s = e.data("cur_max"),
                            l = t.highlight.grip_class;
                        n > a || a > o ? r.removeClass(l) : r.addClass(l), n > s || s > o ? i.removeClass(l) : i.addClass(l)
                    }
                }
            },
            set_position_from_val: function(e, t) {
                var n = this,
                    r = n.data("range_min"),
                    i = n.data("range_max");
                r > e && (e = r), e > i && (e = i), n.data("has_right_grip") ? (t > i && (t = i), r > t && (t = r)) : t = n.data("cur_max");
                var o = d.value_to_px.call(n, e),
                    a = d.value_to_px.call(n, t);
                return u.set_handles_at_px.call(n, o, a), n.data("cur_min", e), n.data("has_right_grip") && n.data("cur_max", t), n
            },
            set_position_from_px: function(e, t) {
                var n = this;
                u.set_handles_at_px.call(n, e, t);
                var r = u.getSliderValuesAtPositionPx.call(n, e, t),
                    i = r[0],
                    o = r[1];
                return n.data("cur_min", i), n.data("has_right_grip") && n.data("cur_max", o), n
            },
            set_handles_at_px: function(e, t) {
                var n = this,
                    r = n.data("settings"),
                    i = r.left_grip_selector,
                    o = r.right_grip_selector,
                    a = r.value_bar_selector,
                    s = n.data("left_grip_width");
                return n.find(i).css("left", e + "px"), n.find(o).css("left", t + "px"), n.data("has_right_grip") ? n.find(a).css("left", e + "px").css("width", t - e + s + "px") : (c || u.populateNakedBarDeltas.call(n, e, t, s), t > e ? n.find(a).css("left", e + "px").css("width", t - e + c.toEndWidth + "px") : n.find(a).css("left", t + c.toBeginLeft + "px").css("width", e - t + c.toBeginWidth + "px")), n
            },
            drag_start_func_touch: function(e, t, n, i, o) {
                var a = this,
                    s = e.originalEvent,
                    l = s.touches[0],
                    c = l.pageY,
                    d = l.pageX,
                    p = Math.abs(a.offset().top - c),
                    f = a.offset().left,
                    h = f - d,
                    m = d - (f + a.width());
                p > t.touch_tolerance_value_bar_y || h > t.touch_tolerance_value_bar_x || m > t.touch_tolerance_value_bar_x || (s.preventDefault(), r = l.pageX, u.drag_start_func.call(a, l, t, n, i, o))
            },
            drag_start_func: function(r, o, a, s, l) {
                var c = this;
                if (c.find(o.left_grip_selector + "," + o.value_bar_selector + "," + o.right_grip_selector).removeClass(o.animating_css_class), d.is_enabled.call(c)) {
                    var p = e(r.target),
                        f = !1;
                    if ("object" == typeof o.highlight && (f = p.is(o.highlight.panel_selector)), l !== !1 || p.is(o.left_grip_selector) || p.is(o.right_grip_selector) || p.is(o.value_bar_selector) || f || p.is(c)) {
                        t = c;
                        var h, m, g, v, y, b, _ = u.getGripPositionPx.call(c, a),
                            x = u.getSliderWidthPx.call(c) - c.data("left_grip_width"),
                            S = a.offset().left,
                            w = u.getRightGripPositionPx.call(c);
                        m = Math.round(r.pageX) - c.data("left_grip_width") / 2, g = Math.abs(S - m), y = m - S, c.data("has_right_grip") ? (h = s.offset().left, v = Math.abs(h - m), b = m - h) : (v = 2 * g, b = 2 * y), o.user_drag_start_callback.call(c, r), g === v ? S > m ? (_ += y, i = !0) : (w += b, i = !1) : v > g ? (_ += y, i = !0) : (w += b, i = !1), c.data("has_right_grip") ? w > x && (w = x) : _ > x && (_ = x), 0 > _ && (_ = 0), n = !0;
                        var T = c.data("cur_min"),
                            C = c.data("cur_max");
                        u.set_position_from_px.call(c, _, w), u.refresh_grips_style.call(c), u.notify_changed_implicit.call(c, "drag_start", T, C), "[object Touch]" !== Object.prototype.toString.apply(r) && r.preventDefault()
                    }
                }
            },
            drag_move_func_touch: function(e) {
                if (n === !0) {
                    var t = e.originalEvent;
                    t.preventDefault();
                    var r = t.touches[0];
                    u.drag_move_func(r)
                }
            },
            drag_move_func: function(e) {
                if (n) {
                    var o = t,
                        a = o.data("settings"),
                        s = u.getSliderWidthPx.call(o) - o.data("left_grip_width"),
                        l = u.getLeftGripPositionPx.call(o),
                        c = u.getRightGripPositionPx.call(o),
                        d = Math.round(e.pageX),
                        p = d - r,
                        f = o.data("left_grip_width") / 2,
                        h = o.offset().left + o.data("left_grip_width") - f,
                        m = h + s;
                    a.crossable_handles === !1 && o.data("has_right_grip") && (i ? m = h + c : h += l);
                    var g = 0,
                        v = 0;
                    h > d && (g = 1, v = 0), d > m && (v = 1, g = 0), a.crossable_handles === !0 && o.data("has_right_grip") && (i ? s >= c && l + p > c && (i = !1, l = c) : l >= 0 && l > c + p && (i = !0, c = l));
                    var y = l,
                        b = c;
                    (p > 0 && !g || 0 > p && !v) && (i ? y += p : b += p), u.validateAndMoveGripsToPx.call(o, y, b), r = d, "[object Touch]" !== Object.prototype.toString.apply(e) && e.preventDefault()
                }
            },
            drag_end_func_touch: function(e) {
                var t = e.originalEvent;
                t.preventDefault();
                var n = t.touches[0];
                u.drag_end_func(n)
            },
            drag_end_func: function() {
                var e = t;
                if ("undefined" != typeof e) {
                    n = !1, r = void 0, u.notify_mouse_up_implicit.call(e, i), t = void 0;
                    var o = e.data("settings");
                    e.find(o.left_grip_selector + "," + o.value_bar_selector + "," + o.right_grip_selector).addClass(o.animating_css_class)
                }
            },
            get_rounding_for_value: function(e) {
                var t = this,
                    n = t.data("rounding"),
                    r = t.data("rounding_ranges");
                if ("object" == typeof r) {
                    var i = u.binarySearch.call(t, r, e, function(e, t) {
                        return e[t].range
                    }, function(e, t, n) {
                        return e < t[n].range ? n > 0 ? e >= t[n - 1].range ? 0 : -1 : 0 : 1
                    });
                    if (n = 1, i > -1) n = parseInt(r[i].value, 10);
                    else {
                        var o = r.length - 1;
                        e >= r[o].range && (n = r[o].value)
                    }
                }
                return n
            },
            notify_mouse_up_implicit: function(e) {
                var t = this,
                    n = d.get_current_min_value.call(t),
                    r = d.get_current_max_value.call(t),
                    i = !1;
                (t.data("beforestart_min") !== n || t.data("beforestart_max") !== r) && (i = !0, t.data("beforestart_min", n), t.data("beforestart_max", r));
                var o = t.data("settings");
                return o.user_mouseup_callback.call(t, d.get_current_min_value.call(t), d.get_current_max_value.call(t), e, i), t
            },
            notify_changed_implicit: function(e, t, n) {
                var r = this,
                    i = !1;
                ("init" === e || "refresh" === e) && (i = !0);
                var o = d.get_current_min_value.call(r),
                    a = d.get_current_max_value.call(r);
                return i || (t = d.round_value_according_to_rounding.call(r, t), n = d.round_value_according_to_rounding.call(r, n)), (i || o !== t || a !== n) && (u.notify_changed_explicit.call(r, e, t, n, o, a), i = 1), i
            },
            notify_changed_explicit: function(e, t, n, r, i) {
                var o = this,
                    a = o.data("settings");
                return o.data("aria_enabled") && u.updateAriaAttributes.call(o), a.value_changed_callback.call(o, e, r, i, t, n), o
            },
            validate_params: function(t) {
                var n = this,
                    r = n.data("range_min"),
                    i = n.data("range_max"),
                    o = n.data("cur_min"),
                    a = n.data("lower-limit"),
                    s = n.data("upper-limit"),
                    l = u.haveLimits.call(n);
                "undefined" == typeof r && e.error("the data-range_min attribute was not defined"), "undefined" == typeof i && e.error("the data-range_max attribute was not defined"), "undefined" == typeof o && e.error("the data-cur_min attribute must be defined"), r > i && e.error("Invalid input parameter. must be min < max"), l && a > s && e.error("Invalid data-lower-limit or data-upper-limit"), 0 === n.find(t.left_grip_selector).length && e.error("Cannot find element pointed by left_grip_selector: " + t.left_grip_selector), "undefined" != typeof t.right_grip_selector && 0 === n.find(t.right_grip_selector).length && e.error("Cannot find element pointed by right_grip_selector: " + t.right_grip_selector), "undefined" != typeof t.value_bar_selector && 0 === n.find(t.value_bar_selector).length && e.error("Cannot find element pointed by value_bar_selector" + t.value_bar_selector)
            },
            rangemap_0_to_n: function(e, t) {
                var n = this,
                    r = n.data("range_min"),
                    i = n.data("range_max");
                return r >= e ? 0 : e >= i ? t : Math.floor((t * e - t * r) / (i - r))
            },
            inverse_rangemap_0_to_n: function(e, t) {
                var n = this,
                    r = n.data("range_min"),
                    i = n.data("range_max");
                if (0 >= e) return r;
                if (e >= t) return i;
                var o = (i - r) * e / t;
                return o + r
            }
        },
        d = {
            teardown: function() {
                var t = this;
                return t.removeData(), e(document).unbind("mousemove.nstSlider").unbind("mouseup.nstSlider"), t.parent().unbind("mousedown.nstSlider").unbind("touchstart.nstSlider").unbind("touchmove.nstSlider").unbind("touchend.nstSlider"), t.unbind("keydown.nstSlider").unbind("keyup.nstSlider"), t
            },
            init: function(t) {
                var n = e.extend({
                        animating_css_class: "nst-animating",
                        touch_tolerance_value_bar_y: 30,
                        touch_tolerance_value_bar_x: 15,
                        left_grip_selector: ".nst-slider-grip-left",
                        right_grip_selector: void 0,
                        highlight: void 0,
                        rounding: void 0,
                        value_bar_selector: void 0,
                        crossable_handles: !0,
                        value_changed_callback: function() {},
                        user_mouseup_callback: function() {},
                        user_drag_start_callback: function() {}
                    }, t),
                    r = e(document);
                return r.unbind("mouseup.nstSlider"), r.unbind("mousemove.nstSlider"), r.bind("mousemove.nstSlider", u.drag_move_func), r.bind("mouseup.nstSlider", u.drag_end_func), this.each(function() {
                    var t = e(this),
                        r = t.parent();
                    t.data("enabled", !0);
                    var c = t.data("range_min"),
                        p = t.data("range_max"),
                        f = t.data("cur_min"),
                        h = t.data("cur_max");
                    "undefined" == typeof h && (h = f), "" === c && (c = 0), "" === p && (p = 0), "" === f && (f = 0), "" === h && (h = 0), t.data("range_min", c), t.data("range_max", p), t.data("cur_min", f), t.data("cur_max", h), u.validate_params.call(t, n), t.data("settings", n), "undefined" != typeof n.rounding ? d.set_rounding.call(t, n.rounding) : "undefined" != typeof t.data("rounding") ? d.set_rounding.call(t, t.data("rounding")) : d.set_rounding.call(t, 1);
                    var m = t.find(n.left_grip_selector)[0],
                        g = e(m),
                        v = e(t.find(n.right_grip_selector)[0]);
                    "undefined" == typeof g.attr("tabindex") && g.attr("tabindex", 0);
                    var y = !1;
                    t.find(n.right_grip_selector).length > 0 && (y = !0, "undefined" == typeof v.attr("tabindex") && v.attr("tabindex", 0)), t.data("has_right_grip", y), t.data("aria_enabled") === !0 && (g.attr("role", "slider").attr("aria-disabled", "false"), y && v.attr("role", "slider").attr("aria-disabled", "false")), t.bind("keyup.nstSlider", function(e) {
                        if (t.data("enabled")) {
                            switch (e.which) {
                                case 37:
                                case 38:
                                case 39:
                                case 40:
                                    if (o === s) {
                                        var n, r, c, p = u.getSliderWidthPx.call(t);
                                        if (0 > a - l) {
                                            for (r = l; p >= r; r++)
                                                if (n = d.round_value_according_to_rounding.call(t, u.getSliderValuesAtPositionPx.call(t, r, r)[1]),
                                                    n !== s) {
                                                    c = r;
                                                    break
                                                }
                                        } else
                                            for (r = l; r >= 0; r--)
                                                if (n = d.round_value_according_to_rounding.call(t, u.getSliderValuesAtPositionPx.call(t, r, r)[1]), n !== s) {
                                                    c = r;
                                                    break
                                                }
                                        i ? u.validateAndMoveGripsToPx.call(t, c, u.getRightGripPositionPx.call(t)) : u.validateAndMoveGripsToPx.call(t, u.getLeftGripPositionPx.call(t), c), u.notify_mouse_up_implicit.call(t, i)
                                    }
                            }
                            o = void 0, a = void 0, s = void 0, l = void 0
                        }
                    }), t.bind("keydown.nstSlider", function(e) {
                        if (t.data("enabled")) {
                            var n = function(e, n) {
                                var r = u.getLeftGripPositionPx.call(t),
                                    c = u.getRightGripPositionPx.call(t);
                                switch ("undefined" == typeof o && (a = i ? r : c, o = i ? d.get_current_min_value.call(t) : d.get_current_max_value.call(t)), n.which) {
                                    case 37:
                                    case 40:
                                        i ? r-- : c--, n.preventDefault();
                                        break;
                                    case 38:
                                    case 39:
                                        i ? r++ : c++, n.preventDefault()
                                }
                                l = i ? r : c, u.validateAndMoveGripsToPx.call(t, r, c), s = i ? d.get_current_min_value.call(t) : d.get_current_max_value.call(t)
                            };
                            y && t.find(":focus").is(v) ? (i = !1, n.call(t, v, e)) : (i = !0, n.call(t, g, e))
                        }
                    });
                    var b = u.getLeftGripWidth.call(t),
                        _ = y ? u.getRightGripWidth.call(t) : b;
                    if (t.data("left_grip_width", b), t.data("right_grip_width", _), t.data("value_bar_selector", n.value_bar_selector), !y) {
                        var x = h === p || h === c;
                        u.setNakedBarDelta.call(t, x ? "stickToSides" : "middle", b)
                    }
                    c === p || f === h ? d.set_range.call(t, c, p) : u.set_position_from_val.call(t, t.data("cur_min"), t.data("cur_max")), u.notify_changed_implicit.call(t, "init"), t.data("beforestart_min", d.get_current_min_value.call(t)), t.data("beforestart_max", d.get_current_max_value.call(t)), t.bind("mousedown.nstSlider", function(e) {
                        u.drag_start_func.call(t, e, n, g, v, !1)
                    }), r.bind("touchstart.nstSlider", function(e) {
                        u.drag_start_func_touch.call(t, e, n, g, v, !0)
                    }), r.bind("touchend.nstSlider", function(e) {
                        u.drag_end_func_touch.call(t, e)
                    }), r.bind("touchmove.nstSlider", function(e) {
                        u.drag_move_func_touch.call(t, e)
                    });
                    var S = t.data("histogram");
                    "undefined" != typeof S && d.set_step_histogram.call(t, S)
                })
            },
            get_range_min: function() {
                var e = this;
                return e.data("range_min")
            },
            get_range_max: function() {
                var e = this;
                return e.data("range_max")
            },
            get_current_min_value: function() {
                var t, n = e(this),
                    r = d.get_range_min.call(n),
                    i = d.get_range_max.call(n),
                    o = n.data("cur_min");
                if (t = r >= o ? r : d.round_value_according_to_rounding.call(n, o), u.haveLimits.call(n)) {
                    if (r >= t) return n.data("lower-limit");
                    if (t >= i) return n.data("upper-limit")
                } else {
                    if (r >= t) return r;
                    if (t >= i) return i
                }
                return t
            },
            get_current_max_value: function() {
                var t, n = e(this),
                    r = d.get_range_min.call(n),
                    i = d.get_range_max.call(n),
                    o = n.data("cur_max");
                if (t = o >= i ? i : d.round_value_according_to_rounding.call(n, o), u.haveLimits.call(n)) {
                    if (t >= i) return n.data("upper-limit");
                    if (r >= t) return n.data("lower-limit")
                } else {
                    if (t >= i) return i;
                    if (r >= t) return r
                }
                return t
            },
            is_handle_to_left_extreme: function() {
                var e = this;
                return u.haveLimits.call(e) ? e.data("lower-limit") === d.get_current_min_value.call(e) : d.get_range_min.call(e) === d.get_current_min_value.call(e)
            },
            is_handle_to_right_extreme: function() {
                var e = this;
                return u.haveLimits.call(e) ? e.data("upper-limit") === d.get_current_max_value.call(e) : d.get_range_max.call(e) === d.get_current_max_value.call(e)
            },
            refresh: function() {
                var e = this,
                    t = e.data("last_step_histogram");
                "undefined" != typeof t && d.set_step_histogram.call(e, t), u.set_position_from_val.call(e, d.get_current_min_value.call(e), d.get_current_max_value.call(e));
                var n = e.data("highlightedRangeMin");
                if ("number" == typeof n) {
                    var r = e.data("highlightedRangeMax");
                    d.highlight_range.call(e, n, r)
                }
                return u.notify_changed_implicit.call(e, "refresh"), e
            },
            disable: function() {
                var e = this,
                    t = e.data("settings");
                return e.data("enabled", !1).find(t.left_grip_selector).attr("aria-disabled", "true").end().find(t.right_grip_selector).attr("aria-disabled", "true"), e
            },
            enable: function() {
                var e = this,
                    t = e.data("settings");
                return e.data("enabled", !0).find(t.left_grip_selector).attr("aria-disabled", "false").end().find(t.right_grip_selector).attr("aria-disabled", "false"), e
            },
            is_enabled: function() {
                var e = this;
                return e.data("enabled")
            },
            set_position: function(e, t) {
                var n = this,
                    r = n.data("cur_min"),
                    i = n.data("cur_max");
                e > t ? u.set_position_from_val.call(n, t, e) : u.set_position_from_val.call(n, e, t), u.refresh_grips_style.call(n), u.notify_changed_implicit.call(n, "set_position", r, i), n.data("beforestart_min", e), n.data("beforestart_max", t)
            },
            set_step_histogram: function(t) {
                var n = this;
                n.data("last_step_histogram", t), "undefined" == typeof t && (e.error("got an undefined histogram in set_step_histogram"), u.unset_step_histogram.call(n));
                var r = u.getSliderWidthPx.call(n) - n.data("left_grip_width"),
                    i = t.length;
                if (!(0 >= r)) {
                    var o, a = 0;
                    for (o = 0; i > o; o++) a += t[o];
                    if (0 === a) return d.unset_step_histogram.call(n), n;
                    var s = parseFloat(a) / r;
                    for (o = 0; i > o; o++) t[o] = t[o] / s;
                    var l = [t[0]];
                    for (o = 1; i > o; o++) {
                        var c = l[o - 1] + t[o];
                        l.push(c)
                    }
                    l.push(r);
                    for (var p = [n.data("range_min")], f = 0, h = p[0], m = 0; r >= f;) {
                        var g = parseInt(l.shift(), 10),
                            v = u.inverse_rangemap_0_to_n.call(n, m + 1, i + 1);
                        m++;
                        var y = g - f,
                            b = v - h;
                        for (o = f; g > o; o++) {
                            var _ = h + b * (o - f + 1) / y;
                            p.push(_), f++, h = _
                        }
                        if (f === r) break
                    }
                    p[p.length - 1] = n.data("range_max");
                    var x = function(e) {
                            return p[parseInt(e, 10)]
                        },
                        S = function(e) {
                            var t = u.binarySearch.call(n, p, e, function(e, t) {
                                return e[t]
                            }, u.binarySearchValueToPxCompareFunc);
                            return p[t] === e ? t : Math.abs(p[t - 1] - e) < Math.abs(p[t] - e) ? t - 1 : t
                        };
                    return n.data("pixel_to_value_mapping", x), n.data("value_to_pixel_mapping", S), n
                }
            },
            unset_step_histogram: function() {
                var e = this;
                return e.removeData("pixel_to_value_mapping"), e.removeData("value_to_pixel_mapping"), e.removeData("last_step_histogram"), e
            },
            set_range: function(e, t) {
                var n = this,
                    r = d.get_current_min_value.call(n),
                    i = d.get_current_max_value.call(n);
                return n.data("range_min", e), n.data("range_max", t), u.set_position_from_val.call(n, r, i), u.notify_changed_implicit.call(n, "set_range", r, i), n
            },
            highlight_range: function(t, n) {
                var r = this,
                    i = r.data("settings");
                "undefined" == typeof i.highlight && e.error('you cannot call highlight_range if you haven\' specified the "highlight" parameter in construction!'), t || (t = 0), n || (n = 0);
                var o = d.value_to_px.call(r, t),
                    a = d.value_to_px.call(r, n),
                    s = a - o + r.data("left_grip_width"),
                    l = r.find(i.highlight.panel_selector);
                return l.css("left", o + "px"), l.css("width", s + "px"), r.data("highlightedRangeMin", t), r.data("highlightedRangeMax", n), u.refresh_grips_style.call(r), r
            },
            set_rounding: function(t) {
                var n = this;
                "string" == typeof t && t.indexOf("{") > -1 && (t = e.parseJSON(t)), n.data("rounding", t);
                var r = [];
                if ("object" == typeof t) {
                    var i;
                    for (i in t)
                        if (t.hasOwnProperty(i)) {
                            var o = t[i];
                            r.push({
                                range: o,
                                value: i
                            })
                        }
                    r.sort(function(e, t) {
                        return e.range - t.range
                    }), n.data("rounding_ranges", r)
                } else n.removeData("rounding_ranges");
                return n
            },
            get_rounding: function() {
                var e = this;
                return e.data("rounding")
            },
            round_value_according_to_rounding: function(t) {
                var n = this,
                    r = u.get_rounding_for_value.call(n, t);
                if (r > 0) {
                    var i = t / r,
                        o = parseInt(i, 10),
                        a = i - o;
                    a > .5 && o++;
                    var s = o * r;
                    return s
                }
                return e.error("rounding must be > 0, got " + r + " instead"), t
            },
            value_to_px: function(e) {
                var t = this,
                    n = t.data("value_to_pixel_mapping");
                if ("undefined" != typeof n) return n(e);
                var r = u.getSliderWidthPx.call(t) - t.data("left_grip_width");
                return u.rangemap_0_to_n.call(t, e, r)
            }
        },
        p = "nstSlider";
    e.fn[p] = function(t) {
        if (d[t]) {
            if (this.data("initialized") === !0) return d[t].apply(this, Array.prototype.slice.call(arguments, 1));
            throw new Error("method " + t + " called on an uninitialized instance of " + p)
        }
        return "object" != typeof t && t ? void e.error("Cannot call method " + t) : (this.data("initialized", !0), d.init.apply(this, arguments))
    }
}(jQuery),
function(e) {
    e.fn.lazyLoad = function(t) {
        var n = {
                attr: "data-url",
                container: e(window),
                callback: e.noop
            },
            r = e.extend({}, n, t || {});
        r.cache = [], e(this).each(function() {
            var t = this.nodeName.toLowerCase(),
                n = e(this).attr(r.attr),
                i = {
                    obj: e(this),
                    tag: t,
                    url: n
                };
            r.cache.push(i)
        });
        var i = function(t) {
                e.isFunction(r.callback) && r.callback.call(t.get(0))
            },
            o = function() {
                var t = r.container.height();
                e(window).get(0) === window ? contop = e(window).scrollTop() : contop = r.container.offset().top, e.each(r.cache, function(e, n) {
                    var r, o, a = n.obj,
                        s = n.tag,
                        l = n.url;
                    a && (r = a.offset().top - contop, r + a.height(), (r >= 0 && t > r || o > 0 && t >= o) && (l ? ("img" === s && i(a.attr("src", l)), "span" === s ? a[0].style.backgroundImage = "url(" + l + ")" : a.load(l, {}, function() {
                        i(a)
                    })) : i(a), n.obj = null))
                })
            };
        o(), window.loadImag = o, r.container.bind("scroll", o)
    }
}(jQuery),
function(e) {
    "use strict";

    function t() {
        return e.devicePixelRatio
    }

    function n() {
        return e.document.documentElement.clientWidth
    }

    function r() {
        return e.document.documentElement.clientHeight
    }
    var i = e.document,
        o = i.body,
        a = i.head,
        s = i.getElementsByTagName("html")[0],
        l = function c() {
            var e = t(),
                l = 1 / e,
                u = i.querySelector('meta[name="viewport"]');
            u || (u = i.createElement("meta"), u.setAttribute("name", "viewport"), a.insertBefore(u, a.childNodes[0])), u.setAttribute("content", "initial-scale=" + l + ", maximum-scale=" + l + ", minimum-scale=" + l + ", user-scalable=no");
            var d = n(),
                p = (r(), d / 10 + "px"),
                f = 12 * e + "px";
            return o.style.fontSize = f, o.style.width = d, o.style.lineHeight = f, s.style.fontSize = p, c
        }();
    e.onresize = function() {
        l()
    }, $(function() {
        function t() {
            a = new iScroll("box", {
                scrollbarClass: "",
                useTransition: !0,
                topOffset: 0,
                onRefresh: function() {},
                onScrollMove: function() {},
                onScrollEnd: function() {
                    loadImag()
                }
            }), s = new iScroll("goodlist_box", {
                scrollbarClass: "",
                useTransition: !0,
                topOffset: 0,
                onRefresh: function() {},
                onScrollMove: function() {},
                onScrollEnd: function() {
                    loadImag()
                }
            }), setTimeout(function() {
                $("#goodlist").removeClass("active").addClass("hide")
            }, 800)
        }

        function r(e) {
            if (0 == $(e).length) console.error("Can't find " + e + " Node");
            else {
                $(e).width(.7 * n());
                var t = {
                    crossable_handles: !1,
                    left_grip_selector: ".leftGrip",
                    right_grip_selector: ".rightGrip",
                    value_bar_selector: ".bar",
                    value_changed_callback: function(e, t, n) {
                        $(this).parent().find(".leftLabel").text(t), $(this).parent().find(".rightLabel").text(n)
                    }
                };
                "#priceSlider" != e && delete t.right_grip_selector, $(e).nstSlider(t)
            }
        }

        function o() {
            var e = $(".mark_ge"),
                t = $(".mark_cnt"),
                n = e.length,
                r = "";
            r = n % 3 ? 1 : 0;
            var i = n / 3,
                o = parseInt(i + r);
            t.width(3.5 * o + "rem");
            for (var a = $('<div class="mark_cnt_ls"></div>'), s = $('<div class="mark_cnt_ls"></div>'), l = $('<div class="mark_cnt_ls"></div>'), c = 0, u = e.length; u > c; c++) {
                var d = e.eq(c),
                    p = d.text().length;
                p > 8 ? d.css({
                    "font-size": "0.45rem",
                    "line-height": "0.68rem"
                }) : p > 4 ? d.css({
                    "font-size": "0.5rem",
                    "line-height": "1.2rem"
                }) : p > 2 ? d.css({
                    "font-size": "0.55rem",
                    "line-height": "2.3rem"
                }) : d.css({
                    "font-size": "0.9rem",
                    "line-height": "2.19rem"
                }), o > c ? s.append(d) : c > o && c < parseInt(r + 1 + 2 * i) ? a.append(d) : l.append(d)
            }
            t.html(""), t.append(a, s, l);
            new iScroll("mark_box", {
                scrollbarClass: "",
                useTransition: !0,
                lopOffset: 0,
                onRefresh: function() {},
                onScrollMove: function() {},
                onScrollEnd: function() {}
            })
        }
        var a, s;
        setTimeout(function() {
            t()
        }, 300), $(i).on("touchstart", ".button", function() {});
        var l = ["#sour", "#priceSlider", "#sweet", "#bitter", "#puckery", "#alcohol"];
        l.forEach(function(e) {
            r(e)
        }), $(i).on("touchstart", "#top_purpose, #top_price, #top_taste, #menu_quick, #menu_single,.icon_ban,#top_category", function() {
            var t = $(this);
            if ($(this).hasClass("icon_ban")) t.parent().hide(), e.location.reload();
            else {
                var n = $(this).attr("id");
                event.preventDefault();
                var r = function(e) {
                    switch (e) {
                        case "top_category":
                            $(".list_t li").eq(0).trigger("click");
                            break;
                        case "menu_quick":
                            var t = $("#goodlist"),
                                r = $("#main");
                            t.addClass("hide"), r.removeClass("hide"), r.hasClass("active") || r.addClass("active");
                            break;
                        case "menu_single":
                            var t = $("#goodlist"),
                                r = $("#main");
                            r.addClass("hide"), setTimeout(function() {
                                t.removeClass("hide"), t.hasClass("active") || (t.addClass("active"), s.refresh())
                            }, 0);
                            break;
                        case "top_purpose":
                            console.log(n);
                            break;
                        case "top_taste":
                            console.log(n);
                            var i = $("#taste"),
                                r = $("#main>div");
                            r.addClass("blur"), i.removeClass("hide"), i.hasClass("active") || i.addClass("active");
                            break;
                        case "top_price":
                            var o = $("#price"),
                                r = $("#main>div");
                            r.addClass("blur"), o.removeClass("hide"), o.hasClass("active") || o.addClass("active")
                    }
                };
                r(n)
            }
        }), $(i).on("click", ".list_t li,.mark_ge", function() {
            var e = $("#mark"),
                t = $("#main>div,#goodlist>div");
            if (t.addClass("blur"), e.removeClass("hide"), e.hasClass("active")) {
                if ($(this).hasClass("mark_ge")) return $("#mark_close").trigger("touchstart"), void $(".use_tag b").html($(this).text())
            } else e.addClass("active");
            o()
        }), $(i).on("touchstart", "#taste_confirm_bt,#price_confirm_bt,#price_close,#mark_close,#taste_close", function() {
            function e(e) {
                switch (e) {
                    case "price_close":
                    case "price_confirm_bt":
                        var t = $("#price"),
                            n = $("#main>div");
                        $(".price_tag b").html(parseInt($(".leftLabel").text()) + "-" + parseInt($(".rightLabel").text())), n.removeClass("blur"), t.addClass("hide");
                        break;
                    case "mark_close":
                        var r = $("#mark"),
                            n = $("#main>div,#goodlist>div");
                        n.removeClass("blur"), r.addClass("hide");
                        break;
                    case "taste_close":
                    case "taste_confirm_bt":
                        var i = $("#taste"),
                            n = $("#main>div");
                        n.removeClass("blur"), i.addClass("hide")
                }
            }
            var t = $(this).attr("id");
            e(t)
        }), $(document).on("click", ".add_to_cart", function(e) {
            var t = $(this)[0].getBoundingClientRect();
            if (!$(".shopping_cart")[0]) return !1;
            var n = ($(".shopping_cart")[0].getBoundingClientRect(), {
                    dom: $('<span class="add_point"><span>'),
                    x: t.left,
                    y: t.top
                }),
                r = n.dom,
                i = 0;
            r.css({
                left: n.x - 30,
                top: n.y - 20
            }), $("body").prepend(n.dom);
            var o = parseInt(r.css("left")),
                a = parseInt(r.css("top")),
                s = function(e, t) {
                    if (1 != i) {
                        i = 1;
                        var n = $("<style>@-webkit-keyframes goCartFrame {0% {left: " + e + "px; top : " + t + "px; } 50%{ left: " + (e - 70) + "px; top : " + (t - 90) + "px;} 97% {  left: 93%; top : 95%;opacity:1; } 100% { left: 93%; top : 95%;opacity:0;visibility: hidden;} }</style>");
                        $("body").append(n), r.removeClass("goCart"), setTimeout(function() {
                            r.addClass("goCart")
                        }, 10), setTimeout(function() {
                            i = 0, n.remove(), r.remove();
                            var e = $('<em class="cart_add_1">+1</em>');
                            $(".shopping_cart").append(e), setTimeout(function() {}, 1e3), $(".shopping_cart b").html(1 * $(".shopping_cart b").html() + 1)
                        }, 600)
                    }
                };
            s(o, a)
        })
    }), $(".scrollLoading").lazyLoad({
        attr: "data-img",
        callback: function() {}
    })
}(window);
